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

轮转数组(中等)

方法一:简单

新建一个和原数组大小一样的新数组,用来存储移动后的数据。

就是对原数组进行for循环,把原数组i位置上面的数字移动到新数组(i+k)%nums.length位置上。

然后再把新数组上面的数赋值到原数组。

代码:

class Solution {public void rotate(int[] nums, int k) {int n = nums.length;int[] newarr=new int[nums.length];for(int i=0;i<nums.length;i++){newarr[(i+k)%nums.length]=nums[i];}System.arraycopy(newarr, 0, nums, 0, n);}
}

方法二:

环状替换:

  1. 计算有效旋转次数k = k % nums.length(因为旋转 nums.length 次等于不旋转)。

  2. 逐个替换元素

    • 从起始位置 i = 0 开始,将 nums[i] 移动到 nums[(i + k) % n]

    • 记录被替换的元素 prev = nums[i],并继续替换下一个位置,直到回到起始位置。

  3. 处理多个环

    • 如果 nums.length 和 k 有公约数(即 gcd(nums.length, k) != 1),则需要处理多个环。

    • 例如,nums = [1,2,3,4,5,6]k = 2 需要 2 个环:

      • 环 1:1 → 3 → 5 → 1

      • 环 2:2 → 4 → 6 → 2

    • 因此,外层循环的次数应为 gcd(nums.length, k)

class Solution {public void rotate(int[] nums, int k) {int n = nums.length;k = k % n; // 处理 k > n 的情况if (k == 0) return; // 无需旋转int count = 0; // 记录已替换的元素个数for (int start = 0; count < n; start++) {int current = start;int prev = nums[start];do {int next = (current + k) % n;int temp = nums[next];nums[next] = prev;prev = temp;current = next;count++;} while (current != start); // 回到起点时结束当前环}}
}

http://www.xdnf.cn/news/176221.html

相关文章:

  • 如何优雅地解决AI生成内容粘贴到Word排版混乱的问题?
  • 从“世界工厂”到“智造之都”:双运放如何改写东莞产业基因?
  • JavaScript 中 undefined 和 not defined 的区别
  • Dev控件RadioGroup 如何设置一排有N个显示或分为几行
  • 使用cesium设置第一视角
  • 第2讲、Tensor高级操作与自动求导详解
  • w~嵌入式C语言~合集6
  • 【计算机哲学故事1-2】输入输出(I/O):你吸收什么,便成为什么
  • APP、游戏、网站被黑客攻击了怎么解决?
  • MongoDB 操作全解析:从部署到安全控制的详细指南(含 emoji 趣味总结)
  • 京东商品详情数据爬取难度分析与解决方案
  • Spark-Streaming核心编程(3)
  • windows开启内测压缩(亲测可用)
  • uniapp-商城-40-shop 购物车 选好了 进行订单确认4 配送方式3 地址编辑
  • C++和Java该如何选择?
  • DeepSeek智能时空数据分析(四):绘制行政区域并定制样式
  • Go 语言 核心知识点
  • 【数据挖掘】时间序列预测-时间序列的平稳性
  • 【数据挖掘】时间序列预测-常用序列预测模型
  • 深入理解Android Activity生命周期
  • 在windows使用docker打包springboot项目镜像并上传到阿里云
  • java面向对象编程【高级篇】之多态
  • 再谈从视频中学习:从给视频打字幕的Humanoid-X、UH-1到首个人形VLA Humanoid-VLA:迈向整合第一人称视角的通用人形控制
  • 虚拟数字人:从虚拟到现实的跨越与未来展望
  • 动手学深度学习11.10. Adam算法-笔记练习(PyTorch)
  • 机器人快速启动
  • 信创系统资产清单采集脚本:主机名+IP+MAC 一键生成 CSV
  • 《博客系统测试报告》
  • 0804标星_复制_删除-网络ajax请求2-react-仿低代码平台项目
  • P1168 中位数