2020-8-10毎日の読書ノート-回転配列
方法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);
}
}
};