[LeetCode]Rotate Array
2015-07-20 16:10
267 查看
解题思路:
一,后面两个笨算法,都要移动好多次,这个算法只需要移动n-k次
边界条件:nums的长度小于等于1,k == 0,这些都直接返回,不要算了;
前条件:k若大于nums的长度,则k对nums.size()取余; 把nums最后k个元素取出
不变式,nums前面 length-k个元素,向右移动k个位置。
结束条件:nums内部移动完毕,把前条件中取出的k个元素一次放到nums前面对应的位置
一,后面两个笨算法,都要移动好多次,这个算法只需要移动n-k次
边界条件:nums的长度小于等于1,k == 0,这些都直接返回,不要算了;
前条件:k若大于nums的长度,则k对nums.size()取余; 把nums最后k个元素取出
不变式,nums前面 length-k个元素,向右移动k个位置。
结束条件:nums内部移动完毕,把前条件中取出的k个元素一次放到nums前面对应的位置
class Solution { public: void rotate(vector<int>& nums, int k) { if ( nums.size() <= 1 || k == 0) return; if ( nums.size() <= k ) k = k % nums.size(); vector<int> temp; temp.assign(nums.begin() + nums.size()-k, nums.end()); for (int i = nums.size()-k-1; i >= 0; --i){ nums[i+k] = nums[i]; } for (int i = 0; i < temp.size(); ++i){ nums[i] = temp[i]; } } };
相关文章推荐
- Oracle之Check约束实例详解
- DB Error: 1 "unrecognized token: ":""
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址
- gulp常用插件之gulp-rev-collector(给资源文件加时间戳)
- pascal+sublime搭建Pascal学习环境
- JavaScript DOM元素尺寸和位置
- nyoj--273字母小游戏 nyoj--217a letter and a number
- Android基于mimeType的关联打开启动
- checkbox的选择和赋值
- 解决无法更改本地文件夹与 TFS 项目之间映射的问题
- Linux real-time signal (实时信号)
- SSH环境mysql6.0报错Could not retrieve transation read-only status server
- HDU 1166 敌兵布阵(线段树或数状数组)
- 使用strace+pstack利器分析程序性能
- 如何清理sqlserver日志LDF文件
- 散列表(哈希表)
- Palindrome Linked List
- poj 2785 4 Values whose Sum is 0
- php5.6编译安装关于mysql的报错
- 关于微信支付报错