Leetcode 189. Rotate Array
来源:互联网 发布:mac air怎么安装双系统 编辑:程序博客网 时间:2024/04/30 04:16
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].
题目要求讲一个数组循环右移k位。
方法一:严格按照右移定义。可按k和(1/2)n的相对大小设计左移和右移,但是时间复杂度高,超出运行时间限制。
void rotate(int nums[], int n, int k) { int temp; k%=n; for (int step = 0; step < k; step++) { temp = nums[n-1]; for (int i = n-1; i > 0; --i) { nums[i] = nums[i-1]; } nums[0] = temp; }}
方法二:思路也很清晰,无技巧。用时56s。
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); k%=n; for(int i=0;i<n-k;++i){ nums.push_back(nums[0]); vector<int>::iterator ite=nums.begin(); nums.erase(ite); } }};
方法三:运用技巧型。进行三次反转,一次对前n-k个,一次对剩下k个,最后整体反转。用时24s
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); k%=n; vector<int>::iterator ite=nums.begin(); reverse(ite,ite+n-k); reverse(ite+n-k,ite+n); reverse(ite,ite+n); }};
0 0
- [LeetCode]189.Rotate Array
- [Leetcode] 189.Rotate Array
- LeetCode 189. Rotate Array
- 【LeetCode】189.Rotate Array
- [leetcode] 189.Rotate Array
- 【leetcode】189. Rotate Array
- Leetcode 189. Rotate Array
- 189. Rotate Array LeetCode
- [LeetCode]189. Rotate Array
- leetcode-189.-Rotate Array
- LeetCode 189. Rotate Array
- leetcode 189. Rotate Array
- LeetCode *** 189. Rotate Array
- [LeetCode]189. Rotate Array
- LeetCode 189. Rotate Array
- leetcode-189. Rotate Array
- Leetcode 189. Rotate Array
- leetcode 189. Rotate Array
- 算法导论 9.1-1 求第二小元素 (这篇文章写的很好转来学习)
- 统计汉字
- HttpClient4.X发送带参数的POST请求
- C&C++基础之数据类型及函数
- Spring事务控制
- Leetcode 189. Rotate Array
- UILabel 的高亮状态
- Android学习笔记之活动间的数据传递
- 二叉排序树的创建,查找,插入,删除
- ViewPager的自带导航
- [Android] Fragment 的生命周期
- 树莓派连接操作系统
- [Leetcode]171. Excel Sheet Column Number
- Android开发实用代码片段(二)