苏州做网站的公司排名,南京模板网站建设企业,公共体育课程网站建设,惠州seo按天付费大家好我是苏麟 , 这篇文章是凑数的 ... 轮转数组
描述 :
给定一个整数数组 nums#xff0c;将数组中的元素向右轮转 k 个位置#xff0c;其中 k 是非负数。
题目 :
牛客 NC110 旋转数组: 这里牛客给出了数组长度我们直接用就可以了 .
LeetCode 189.轮转数组 : 189. 轮…大家好我是苏麟 , 这篇文章是凑数的 ... 轮转数组
描述 :
给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。
题目 :
牛客 NC110 旋转数组: 这里牛客给出了数组长度我们直接用就可以了 .
LeetCode 189.轮转数组 : 189. 轮转数组 分析 :
这个题怎么做呢?你是否想到可以逐次移动来实现? 理论上可以但是实现的时候会发现要处理的情况非常多比较难搞。这里介绍一种简单的方法: 两轮翻转
方法如下: 1.首先对整个数组实行翻转例如[1,2,3,4,5,6,7] 我们先将其整体翻转成[7,6,5,4,3,2,1].
2.从 k 处分隔成左右两个部分这里就是根据k将其分成两组 [7,6,5] 和[4,3,2,1].
3.最后将两个再次翻转就得到[5,6,7] 和[1,2,3,4]最终结果就是[5,6,7,1,2,3,4].
解析 :
// LeetCode
class Solution {public void rotate(int[] nums, int k) {k % nums.length;exchange(nums, 0 , nums.length -1);exchange(nums, 0 , k -1 );exchange(nums, k, nums.length -1);}public void exchange(int[] arr , int left , int right){while(left right){int temp arr[left];arr[left] arr[right];arr[right] temp;left;right--;}}
}
这篇文章会合并到算法通关村第三关白银练习里 .