当前位置: 首页 > news >正文

LeetCode算法学习之旋转数组

完整代码实现

class Solution {public void rotate(int[] nums, int k) {// 第一种解题思路//数组中每个元素的索引值向右增加k个 如果增加后的数字没有超过数组长度 那么就正常存放到新数组对应索引的位置//如果 超出了索引 就用新索引减去原数组的长度的新索引进行赋值//注意点:k的取值,因为k的长度会超过数组的长度,直接使用k有可能造成索引越界的问题,所以新的k值需要对最初的k进行对数组长度取模的操作int[] result = new int[nums.length];k = k % nums.length;if(nums.length == 1){return;}for(int i = 0;i<nums.length;i++){if(i+k<nums.length){result[i+k] = nums[i];}else if(i+k>=nums.length){result[i+k-nums.length] = nums[i];}}    for(int i = 0;i<nums.length;i++){nums[i] = result[i];}}
}

解题思路:

关键观察
1. 旋转的周期性:旋转数组的长度 n 次后,数组会恢复到原始状态。因此,旋转 k 次等价于旋转 k % n 次。例如,k = 10 且 n = 7 时,旋转 10 次等价于旋转 3 次(因为 10 % 7 = 3)。
2. 索引映射:对于数组中的每个元素,旋转后的新位置可以通过 (i + k) % n 计算得到,其中 i 是原始索引,n 是数组长度
算法步骤
1. 处理 k 的值:
计算 k = k % nums.length,确保 k 在 [0, n-1] 范围内,避免不必要的旋转和索引越界
2. 特殊情况处理:
如果数组长度为 1,直接返回,因为旋转不会改变数组
3. 创建临时数组:
创建一个与原数组相同长度的临时数组 result,用于存储旋转后的结果
4. 计算新索引并填充临时数组:
遍历原数组,对于每个元素 nums[i]:
如果 i + k 在数组范围内(即 i + k < n),则 result[i + k] = nums[i]
如果 i + k 超出数组范围(即 i + k >= n),则 result[i + k - n] = nums[i]
实际上,这两种情况可以统一用 result[(i + k) % n] = nums[i] 表示
5. 复制回原数组:
将临时数组 result 的内容复制回原数组 nums

http://www.dtcms.com/a/585594.html

相关文章:

  • webrtc降噪-NoiseSuppressor类源码分析与算法原理
  • openEuler容器化实践:从Docker入门到生产部署
  • Spring Security实战代码详解
  • ES6 Promise:告别回调地狱的异步编程革命
  • 企业网站备案教程免费建设网站抽取佣金
  • seo网站诊断流程公司网站建设费用会计处理
  • 与Figma AI对话的对话框在哪里?
  • 【科研绘图系列】R语言绘制微生物箱线图(box plot)
  • 禅城区网站建设管理网站模板下载免费下载
  • 前端微服务化
  • Linux 软件安装 “命令密码本”:yum/apt/brew 一网打尽
  • 做网站框架显示不出来中国最大的软件公司
  • 轻量级云原生体验:在OpenEuler 25.09上快速部署单节点K3s
  • 程序员 给老婆做网站网站建设 海南
  • 解释 StringRedisTemplate 类和对象的作用与关系
  • MATLAB遗传算法优化RVFL神经网络回归预测(随机函数链接神经网络)
  • 建设网站的知识竞赛国家建设网站
  • ROS2 Humble 笔记(七)标准与自定义 Interface 接口
  • 深入探索序列学习:循环神经网络(RNN)及其变体(LSTM、GRU)的详尽解析
  • 永川区做网站临沂网站建设方案报价
  • B哩B哩车机版专为汽车端或大屏设备开发
  • 一种基于视网膜图像的深度学习系统 DeepRETStroke
  • 2025汽车零部件行业数字化转型落地方案
  • 前后端分离和传统非分离(后端渲染)方案的核心差异
  • 【ZeroRange WebRTC】在自有 AWS 环境实现与 Amazon KVS 等效的 WebRTC 安全方案(落地指南)
  • 用wordpress建站要不要用宝塔网页制作基础教程免费
  • 深入解析红黑树:高效平衡的艺术
  • 李云飞:比亚迪将坚持磷酸铁锂电池路线
  • 制作网站赚钱不建设门户网站的请示
  • 张祥前统一场论动量公式P=m(C-V)误解解答