【LeetCode】Rotate Array 旋转数组
2015-04-23 15:38
423 查看
题目
Rotate Array
Rotate an array of n elements to the right by k steps.For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
题目大意
旋转数组,给定数组长度n,旋转位移k,将数组元素循环右移k位。思路
三步翻转法,《编程珠玑》一书上有讲,步骤如下:将数组从k位置分为前后两半;
翻转前半部分;
翻转后半部分;
翻转整个数组;
图示如下:
解答
Java代码如下,注意遍历时候的边界不要出错:public void rotate(int[] nums, int k) { if(k==0 || nums==null ) return; k = k%nums.length; int tmp; for (int i = 0; i < (nums.length-k)/2; i++) { tmp = nums[i]; nums[i] = nums[nums.length-k-1-i]; nums[nums.length-k-1-i] = tmp; } /*for (int i : nums) { System.out.print(i+"-"); } System.out.println();*/ for (int i = 0; i < k/2; i++) { tmp = nums[i+nums.length-k]; nums[i+nums.length-k] = nums[nums.length-1-i]; nums[nums.length-1-i] = tmp; } /*for (int i : nums) { System.out.print(i+" "); } System.out.println();*/ for (int i = 0; i < nums.length/2; i++) { tmp = nums[i]; nums[i] = nums[nums.length-1-i]; nums[nums.length-1-i] = tmp; } }
相关文章推荐
- leetcode 189. Rotate Array-旋转数组
- leetcode 189. Rotate Array旋转数组
- Rotate Array 数组旋转 leetcode
- 【LeetCode-面试算法经典-Java实现】【189-Rotate Array(旋转数组)】
- leetcode_189. Rotate Array 原地旋转数组
- LeetCode Rotate Array 旋转数组
- leetcode Rotate Array 旋转数组
- LeetCode Rotate Array(数组的旋转)
- leetcode:Rotate Array旋转数组
- LeetCode 189 Rotate Array(旋转数组)
- leetcode-189 Rotate Array 旋转数组
- LeetCode 189. Rotate Array(旋转数组)
- LeetCode 189. Rotate Array (旋转数组)
- LeetCode 189 Rotate Array(旋转数组)
- [LeetCode]12. Rotate Array旋转数组
- [LeetCode] 189. Rotate Array 旋转数组
- [LeetCode] Rotate Array 旋转数组
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- leetcode 81. Search in Rotated Sorted Array II 旋转数组查找+二分查找
- LeetCode 81. Search in Rotated Sorted Array II(搜索旋转的数组)