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

算法:轮转数组---循环取模运算


1、题目:

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。


2、分析特点:

  • 轮转 ==> 取模运算

  • 我们可以使用额外的数组来将每个元素放至正确的位置。用 n 表示数组的长度,我们遍历原数组,将原数组下标为 i 的元素放至新数组下标为 (i+k) mod n 的位置,最后将新数组拷贝至原数组即可。


3、代码:

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

4、复杂度分析:

  • 时间复杂度: O(n),其中 n 为数组的长度。
  • 空间复杂度: O(n)。

5、总结:

轮转、循环 k 步,要想到取模运算,另外需要一个新数组作为结果数组是因为如果我们不使用额外数组,我们直接将每个数字放至它最后的位置,这样被放置位置的元素会被覆盖从而丢失,所以需要一个新数组作为结果数组,最后拷贝回去原数组。




如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

http://www.lryc.cn/news/157240.html

相关文章:

  • Vue教程
  • 算法之双指针题型:
  • vue传递给后端时间格式问题
  • php使用jwt作登录验证
  • 【zlm】 PTS DTS
  • 【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之DDR3 IP简单读写测试(六)
  • 第6章 内核模块符号导出实验(iTOP-RK3568开发板驱动开发指南 )
  • Android12.0首次开机默认授予app运行时权限(去掉运行时授权弹窗)第二种方法
  • conda和Python的虚拟环境如何结合使用,以及二者之间到底有什么区别?
  • 宇凡微YE09合封芯片,集成高性能32位mcu和2.4G芯片
  • 使用perf_analyzer和model-analyzer测试tritonserver的模型性能超详细完整版
  • docker 部署springboot(成功、截图)
  • VMware ubuntu空间越用越大
  • stm32 学习笔记:GPIO输出
  • css换行
  • 面试算法-常用数据结构
  • 【动态规划刷题 10】等差数列划分 最长湍流子数组
  • redis 配置与优化
  • 数据结构例题代码及其讲解-递归与树
  • Jenkins | 流水线构建使用expect免密交互时卡住,直接退出
  • git修改默认分支
  • Android Studio开发入门教程:如何更改APP的图标?
  • MATLAB/Python的编程教程: 匹配滤波器的实现
  • java八股文面试[数据库]——JOIN优化
  • Java语法中一些需要注意的点(仅用于个人学习)
  • golang 线程 定时器 --chatGPT
  • java 编程 7个简单的调优技巧
  • 03-Dockerfile
  • 【AI】机器学习——朴素贝叶斯
  • 数学建模:模糊综合评价分析