LeetCode Rotate Array
来源:互联网 发布:型材套料软件 编辑:程序博客网 时间:2024/05/16 19:41
Rotate Array Total Accepted: 12759 Total Submissions: 73112 My Submissions Question Solution
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代表向右移动的次数。
解法一:
class Solution {public: void rotate(int nums[], int n, int k) { if(n==0)return; k=k%n;//当k大于n的时候,n次循环会回到初始位置,因此,可以省略若干次 if (k == 0) return; int *s=new int[k];//为了一步到位的展开移动,申请k个额外空间用于保存被移出去的元素 for(int i=0;i<k;++i) s[i]=nums[n-k+i];//保存被移出去的元素 for(int j=n-k-1;j>=0;--j) nums[j+k]=nums[j];//移动 for(int i=0;i<k;++i) nums[i]=s[i];//被移出的元素进行归位 free(s); }};
需要额外空间O(k%n)
33 / 33 test cases passed.
Status: Accepted
Runtime: 29 ms
解法二(网络获取):
三次翻转法,第一次翻转前n-k个,第二次翻转后k个,第三次翻转全部。
class Solution {public: void rotate(int nums[], int n, int k) { if(n==0)return ; k=k%n; if(k==0)return ; reverse(nums,n-k,n-1); reverse(nums,0,n-k-1); reverse(nums,0,n-1); } void reverse(int nums[],int i,int j) { for(;i<j;++i,--j) { int t=nums[i]; nums[i]=nums[j]; nums[j]=t; } }};
33 / 33 test cases passed.
Status: Accepted
Runtime: 26 ms
0 0
- [leetcode][array] Rotate Array
- LeetCode[Array]: Rotate Image
- LeetCode:Rotate Array
- [LeetCode] Rotate Array
- *LeetCode-Rotate Array
- [LeetCode]189.Rotate Array
- Rotate Array - LeetCode - Java
- Rotate Array--Leetcode(Java)
- Leetcode--Rotate Array
- LeetCode: Rotate Array
- LeetCode Rotate Array
- Rotate Array(leetcode)
- leetcode Rotate Array
- Leetcode: Rotate Array
- [Leetcode]11 Rotate Array
- [LeetCode][189][Rotate Array]
- Leetcode:Rotate Array
- LeetCode: Rotate Array
- 【回调特性】给Lua版本添加回调特性支持
- LeetCode --- 75. Sort Colors
- 阿里巴巴2015暑期实习经历(吐血整理)
- OpenCV *.dll文件提示错误:cannot find and open the PDB file.
- 必看:Cocos-x 3.2:从C++过渡到Lua
- LeetCode Rotate Array
- 二叉树的建立与先序,后序,中序输出
- MongoDB的分片
- MFC单文档下为视图类添加按钮及其响应函数(手把手截图)
- java获取本周第一天的日期
- atitit.提升兼容性最佳实践 o9o
- WCF的两个uri的区别
- 不建立临时变量,交换两个数中的值
- JQuery处理json与ajax返回JSON实例