189. Rotate Array - Easy
计算有效旋转步数:首先对旋转步数k取模,确保k在数组长度范围内。 分段反转: 计算有效步数:通过对k取模n,确保旋转步数在有效范围内,避免不必要的重复操作。 反转前n-k个元素:这一步将数组的前部分反转,使其成为旋转后的前半部分。 反转后k个元素:这一步将数组的后半部分反转,准备将它们移动到数组的前面。 反转整个数组:最后一步将整个数组反转,完成整体旋转的效果。
发布日期:2025-06-19 22:35:26
浏览次数:6
分类:精选文章
本文共 975 字,大约阅读时间需要 3 分钟。
旋转数组的问题可以通过分段反转的方法高效地解决,这种方法不仅满足在原地操作的要求,还能保证额外空间的占用最低。以下是详细的解决方案和实现步骤。
方法思路
为了在原地旋转数组,我们可以利用分段反转的方法。具体步骤如下:
- 反转前n-k个元素。
- 反转后k个元素。
- 最后反转整个数组。
这种方法的时间复杂度为O(n),空间复杂度为O(1),非常适合处理大数组且内存有限的场景。
解决代码
public class Solution { public void rotate(int[] nums, int k) { if (nums == null || nums.length == 0) return; int n = nums.length; k %= n; if (k == 0) return; reverse(nums, 0, n - k - 1); reverse(nums, n - k, n - 1); reverse(nums, 0, n - 1); } private void reverse(int[] nums, int start, int end) { while (start <= end) { int temp = nums[start]; nums[start] = nums[end]; nums[end] = temp; start++; end--; } }} 详细步骤解释
这种方法通过多次反转不同区间,实现了数组的旋转操作,保证了在原地完成任务,并且空间复杂度为O(1),非常高效。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月04日 16时37分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php缃戠珯,www.wfzwz.com
2025-05-04
php缓存查询函数
2025-05-04
php编写TCP服务端和客户端程序
2025-05-04
php编码规范
2025-05-04
PHP编码规范-PSR1、psr2 /psr3 psr4
2025-05-04
PHP编程效率的20个要点
2025-05-04
PHP网页缓存技术优点及代码
2025-05-04
PHP自动化测试(一)make test 和 phpt
2025-05-04
php自定义函数: 文件大小转换成智能形式
2025-05-04
php英语单词,php常用英语单词,快速学习php编程英语(6)
2025-05-04
PHP获取curl传输进度
2025-05-04
PHP获取IP所在地区(转)
2025-05-04
PHP获取IP的方法对比
2025-05-04
php获取json里面内容
2025-05-04
R2的版本由来
2025-05-04
PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
2025-05-04
PHP获取当前文件的绝对路径
2025-05-04
PHP获取当前时间、时间戳的各种格式写法汇总
2023-03-01
PHP获取当前页面的完整URL
2023-03-01