189. Rotate Array的C++解法
阿新 • • 發佈:2018-12-25
第一種方法:
按步驟,一次一次旋轉。程式碼過於沙雕就不放了。
第二種方法:
第一種的升級,可以直接定位每個數字旋轉後應在的位置。其中主要旋轉次數k有可能大於陣列長度,應先取餘。
class Solution { public: vector<int> rotate(vector<int> &nums, int k) { vector<int> res; int l=nums.size(); k=k%l; for (int i=0;i<l;i++) res.push_back(nums[(i+l-k)%l]); return res; } };
第三種方法:
翻轉字串。
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k=k%nums.size();
reverse(nums.begin(),nums.end()-k);
reverse(nums.end()-k,nums.end());
reverse(nums.begin(),nums.end());
}
};
沒找到時間複雜度為O(1)的演算法。