- 题目:https://leetcode.com/problems/rotate-array/
- 思路:
- 暴力,直接新new一个数组来存储答案,求出旋转后的index,放置元素即可
- 但是题目要求O(1)的空间,那就只能循环移动,a放在b,b放在c,c放在d
- 坑
- 循环移动可能会移动到最开始的位置【死循环】,比如6个数字,移动3格,那需要移动3个循环【0移动到3,3移动到0;1移动到4,4移动到1;2移动到5,5移动到2】
- 代码
class Solution { public: void rotate(vector<int>& nums, int k) { int len = nums.size(); int next_temp; int index = 0; int next_index; if (len <= 1 || k%len==0) return; int temp = nums[0]; int start_index = 0; for (int i = 0; i < len; i++) { next_index = (index+k)%len; next_temp = nums[next_index]; nums[next_index] =temp; temp = next_temp; index = next_index; if (index == start_index) { index = (index+1)%len; temp = nums[index]; start_index = index; } } } };
189. Rotate Array
最新推荐文章于 2024-01-03 12:46:00 发布
