Rotate Array (LeetCode)
Question:
https://leetcode.com/problems/rotate-array/
解答:
就是第i的值移到第(i+k),(i+k)的值移到(i+k+k),一直移到不能移了,然后i+1,继续同样的操作。
用了一个converted数组,表示当前点是否是已经移位后的结果。
class Solution { public: void rotate(int nums[], int n, int k) { k = k%n; if (k == 0) return; std::vector<bool> converted(n, false); int temp; for (int i = 0; i < n; i++) { if (converted[i]) continue; int curri = i; int newi = (i+k)%n; temp = nums[curri]; while (!converted[newi]) { int temp2 = nums[newi]; nums[newi] = temp; converted[newi] = true; curri = newi; newi = (newi+k)%n; temp = temp2; } } } };
浙公网安备 33010602011771号