桂林旅游搜索seo神器
2023.9.3
? ? ? ? k的取值范圍為0~100000,此時(shí)需要考慮到兩種情況,當(dāng)k為0時(shí),此時(shí)數(shù)組不需要輪轉(zhuǎn),因此直接return返回;當(dāng)k大于等于數(shù)組nums的大小時(shí),數(shù)組將會(huì)轉(zhuǎn)為原來(lái)的數(shù)組,然后再接著輪轉(zhuǎn),此時(shí)可以先處理一下k值:k = k % nums.size();? 接下來(lái)再構(gòu)造一個(gè)新數(shù)組用來(lái)裝輪轉(zhuǎn)過(guò)后的元素值即可。?代碼如下:
class Solution {
public:void rotate(vector<int>& nums, int k) {k = k % nums.size(); //k可能大于nums.size()if(k == 0) return;vector<int> ans(nums.size());int seg = nums.size()-k;int j = 0;for(int i=seg; i<nums.size(); i++){ans[j] = nums[i];j++;}for(int i=0; i<seg; i++){ans[j] = nums[i];j++;}nums = ans;}
};
?優(yōu)化:本題數(shù)組可以原地修改。
class Solution {
public:void rotate(vector<int>& 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:看到需要反轉(zhuǎn)的題,可以考慮一下reverse函數(shù)能否派上用場(chǎng)。