Rotate Array
来源:互联网 发布:淘宝旺铺智能版好用吗? 编辑:程序博客网 时间:2024/06/09 20: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]
.
1.每次都是把第n-1个数插入到最前面,最后再将这个vector resize一下就可以了。
2.重新声明一个vector变量tmp,其与nums的元素对应位置为tmp[(i+k)%n]=nums[i],最后再将tmp重赋给nums.但要注意一点,记得初始化vector变量tmp。
3.将数组分成两部分,先roate整个数组,再roate第一部分,最后roate第二部分。
【代码】
思路1:
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); k=k%n; int cnt=0; while(cnt!=k){ nums.insert(nums.begin(),nums[n-1]); cnt++; } nums.resize(n); }};
思路2:
class Solution {public: void rotate(vector<int>& nums, int k) { int n=nums.size(); vector<int> tmp(n,0); if(k==0) return; for(int i=0;i<n;i++){ tmp[(i+k)%n]=nums[i]; } nums=tmp; }};
思路3:
void rotate(int* nums, int numsSize, int k) { k=k%numsSize; reverse(nums,numsSize); reverse(nums,k); reverse(&nums[k],numsSize-k);}void reverse(int* nums,int n){ int mid=n/2; int tmp; for(int i=0;i<mid;i++){ tmp=nums[i]; nums[i]=nums[n-i-1]; nums[n-i-1]=tmp; }}
0 0
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- rotate array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- Rotate Array
- STL系列之八 slist单链表
- MAC 下反编译 APK
- 后端测试和自动化
- android 折线图之二MPAndroidChart
- json obj map 互转utils
- Rotate Array
- IOS 大众点评 团购界面实现
- 合格程序员每天每周每月每年应该做的事
- Ribbon For WPF
- log4j配置
- js中函数参数
- 自定义样式及带数字ProgressBar
- 卷积神经网络代码简单备注
- 黑马程序员-面向对象的三个基本特征之封装