题目:
给定一个数组,将数组向右移动k步,其中k为非负数。
样例:
数组:1 2 3 4 5 6 7,k=3;
输出:5 6 7 1 2 3 4
分析:这道题平常方法做的话也能做,但是当数据量很大的时候,很容易爆时间限制。所以就用到stl里面的函数。第一段代码为我自己写的(爆时间了emo...),第二个是看完解析之后写的,
源码一,
我就不在这里展示了,就是平常做法,循环,爆时间了
源码二:在这里只写入函数,
class Solution {
public:
/**
* @param nums: an array
* @param k: an integer
* @return: rotate the array to the right by k steps
*/
vector<int> rotate(vector<int> &nums, int k) {
// Write your code here
int a=nums.size();
k=k%a;
reverse(nums.begin(),nums.begin()+nums.size()-k);
reverse(nums.begin()+nums.size()-k,nums.end());
reverse(nums.begin(),nums.end());
return nums;
}
};
最后一次更新于2022-01-29
0 条评论