189. Rotate Array
来源:互联网 发布:如何卸载管家婆软件 编辑:程序博客网 时间:2024/05/16 05:50
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]
.
思路:这题有很多种方法。自己写了一种,主要就是先把5、6、7接到另一个vector上,再把剩下的接上去,但这样不太符合O(1) space的要求
(我不管!反正是我自己写的!我就要贴!)
class Solution {public: void rotate(vector<int>& nums, int k) { while(k>nums.size())k=k-nums.size(); vector<int> n; for(int i=nums.size()-k;i<nums.size();i++){ n.push_back(nums[i]); } for(int i=0;i<nums.size()-k;i++){ n.push_back(nums[i]); } nums=n; }};
以下是两种个人觉得很帅的方法:
以下代码并不能通过Leetcode的编译,可能是因为Leetcode现在不能用这些函数了。
1、先逆转n-k到n的部分,再逆转1到n-k-1的部分,最后整体逆转。
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); while(k>n)k%=n; // Reverse the first n - k numbers. // Index i (0 <= i < n - k) becomes n - k - i. reverse(nums, nums[n-k-1]); // Reverse tha last k numbers. // Index n - k + i (0 <= i < k) becomes n - i. reverse(nums[n-k-1], nums[n-1]); // Reverse all the numbers. // Index i (0 <= i < n - k) becomes n - (n - k - i) = i + k. // Index n - k + i (0 <= i < k) becomes n - (n - i) = i. reverse(nums, nums[n-1]); }};2、先交换前K个和后K个,然后范围缩小进一步交换(并没有看太懂不过觉得很酷)
class Solution {public: void rotate(int nums[], int n, int k) { for (; k = k%n; n -= k, nums += k) { // Swap the last k elements with the first k elements. // The last k elements will be in the correct positions // but we need to rotate the remaining (n - k) elements // to the right by k steps. for (int i = 0; i < k; i++) { swap(nums[i], nums[n - k + i]); } } }};
0 0
- Leetcode - Array - 189. Rotate Array
- 189. Rotate Array leetcode(array)
- LeetCode-Array-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
- 189. Rotate Array LeetCode
- 189. Rotate Array
- [LeetCode]189. Rotate Array
- 189. Rotate Array
- leetcode-189.-Rotate Array
- 189. Rotate Array
- 189. Rotate Array
- 189. Rotate Array
- python利用pyinstaller 生成exe程序(转载)
- CentOS常用的文件操作命令总结
- [分享]mac如何把本地Android项目提交到github
- 2016/5/21请教晓恩
- Java中的动态代理--JDK动态代理
- 189. Rotate Array
- 我一定要学习吗?
- 打印出所有的水仙花数
- CSS float浮动的深入研究、详解及拓展(二)
- Unix系统编程(1) - 文件IO
- BaiduMap提示 java.lang.UnsatisfiedLinkError: Native method not found:
- 表格中有复选框的情形
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- 阅读摘要-每日阅读