猪八戒网站做私活赚钱吗,天津设计网站,网站后台哪些功能需要前端配合,做网站简单还是写程序2023.9.3 k的取值范围为0~100000#xff0c;此时需要考虑到两种情况#xff0c;当k为0时#xff0c;此时数组不需要轮转#xff0c;因此直接return返回#xff1b;当k大于等于数组nums的大小时#xff0c;数组将会转为原来的数组#xff0c;然后再接着轮转#xff0c;此…2023.9.3 k的取值范围为0~100000此时需要考虑到两种情况当k为0时此时数组不需要轮转因此直接return返回当k大于等于数组nums的大小时数组将会转为原来的数组然后再接着轮转此时可以先处理一下k值k k % nums.size() 接下来再构造一个新数组用来装轮转过后的元素值即可。 代码如下
class Solution {
public:void rotate(vectorint nums, int k) {k k % nums.size(); //k可能大于nums.size()if(k 0) return;vectorint ans(nums.size());int seg nums.size()-k;int j 0;for(int iseg; inums.size(); i){ans[j] nums[i];j;}for(int i0; iseg; i){ans[j] nums[i];j;}nums ans;}
}; 优化本题数组可以原地修改。
class Solution {
public:void rotate(vectorint nums, int k) {k k % nums.size();reverse(nums.begin(),nums.end());reverse(nums.begin(),nums.begin()k);reverse(nums.begin()k,nums.end());}
}; ps:看到需要反转的题可以考虑一下reverse函数能否派上用场。