力扣hot100——轮转数组
- 开源代码
- 2025-08-24 17:51:01

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
解法思路:
// 空间换时间:轮转问题看作为平移,轮转就是转一圈,如果拉直这个轮的话,其实就是所有数字向后平移k
// 建立一个大小为 原数组+k的数组,将原数组中元素,移动k放入
// 然后将超出原数组部分放到前面空出的部分
class Solution { public: void rotate(vector<int>& nums, int k) { // 空间换时间:轮转问题看作为平移,轮转就是转一圈,如果拉直这个轮的话,其实就是所有数字向后平移k // 建立一个大小为 原数组+k的数组,将原数组中元素,移动k放入 // 然后将超出原数组部分放到前面空出的部分 int n = nums.size(); k %= n; // 如果 k 大于数组长度,只需考虑 k 对 n 取余的情况 vector<int> temp_v(n); // 将元素平移 k 位 for (int i = 0; i < n; ++i) { temp_v[(i + k) % n] = nums[i]; } // 将结果复制回原数组 for (int i = 0; i < n; ++i) { nums[i] = temp_v[i]; } } };力扣hot100——轮转数组由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“力扣hot100——轮转数组”