189.Rotate ArrayのC++解法

716 ワード

1つ目の方法:手順に従って、1回に1回回転します.コードが砂彫りになりすぎると入れません.
第2の方法:第1のアップグレードでは、各デジタルが回転した後に位置する位置を直接位置決めすることができます.ここで、主な回転回数kは配列長よりも大きくなる可能性があり、先に余剰をとるべきである.
class Solution {
public:
    vector rotate(vector &nums, int k) {
        vector res;
        int l=nums.size();
        k=k%l;
        for (int i=0;i

3つ目の方法:文字列を反転します.
class Solution {
public:
    void rotate(vector& 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)のアルゴリズムは見つからなかった.