2020-8-10毎日の読書ノート-回転配列

2020-8-10毎日の読書ノート-回転配列

画像ソースLeetcode
方法1:配列のすべての要素が1ビット右にシフトされ、k回繰り返されるたびに、暴力的な解決策

方法2:新しい配列を作成し、元の配列の要素を新しい配列の回転位置に直接配置します

方法3:最初のステップはすべての数字を逆にすることです。2番目のステップは最初のkの数字を逆にすることです、そして3番目のステップはnkの数字を逆にすることです(最初の3つの方法は最後に変更することもできます)。
メソッドは比較的単純なので、書き込みはありません。4番目のメソッドを直接書き込みました。

方法4:リングの交換方法を説明する
ここに画像の説明を挿入します

class Solution {
    
    
public:
    void rotate(vector<int>& nums, int k) {
    
    
        k %= nums.size();
        int count = 0;
        for(int start = 0;count < nums.size();start++)
        {
    
    
            int current = start;
            int pre = nums[start];
            do{
    
    
                int next = (current + k) % nums.size();
                int temp = nums[next];
                nums[next] = pre;
                pre = temp;
                current = next;
                count++;
            }while(current != start);
        } 
        
    }
};

おすすめ

転載: blog.csdn.net/weixin_45336082/article/details/107922302