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

【力扣-轮转数组 Java / Python】

题目:

在这里插入图片描述
思路:
有两种做法
1、✅ 方法一:额外数组
在复制一份数组,然后在把结果放回去。

class Solution {public void rotate(int[] nums, int k) {int n = nums.length;k = k % n;  // 防止 k > nint[] temp = new int[n];for (int i = 0; i < n; i++) {temp[(i + k) % n] = nums[i];}// 再把结果拷贝回原数组for (int i = 0; i < n; i++) {nums[i] = temp[i];}}
}

2、✅ 方法二:数组反转(最优解,空间 O(1))

Java版本
1)先翻转整体数组
2)在反转前K个
3)在反转后N - K 个

举例:

原数组 [1,2,3,4,5,6,7], k=3

整体反转 → [7,6,5,4,3,2,1]

反转前 3 个 → [5,6,7,4,3,2,1]

反转后 4 个 → [5,6,7,1,2,3,4] ✅

class Solution {public void rotate(int[] nums, int k) {// 翻转数组,先全部,在前k 在剩下的int n = nums.length;k = k % n;reverse(nums, 0 , n - 1);reverse(nums, 0 , k - 1);reverse(nums, k , n - 1);   }public void reverse(int[] nums, int left, int right) {while(left < right) {int temp = nums[left];nums[left] = nums[right];nums[right] = temp;left++;right--;}}
}

python版本

class Solution(object):def rotate(self, nums, k):""":type nums: List[int]:type k: int:rtype: None Do not return anything, modify nums in-place instead."""n = len(nums)k = k % nself.reverse(nums, 0, n - 1)self.reverse(nums, 0, k - 1)self.reverse(nums, k, n - 1)def reverse(self, nums, left, right):while left < right:temp = nums[left]nums[left] = nums[right]nums[right] = templeft += 1right -= 1   
http://www.dtcms.com/a/337766.html

相关文章:

  • leetcode415. 字符串相加
  • 【论文阅读】-《HopSkipJumpAttack: A Query-Efficient Decision-Based Attack》
  • Jenkins全链路教程——Jenkins调用Maven构建项目
  • 北京朝阳公园——夏日清凉来袭
  • 第7节 神经网络
  • 登上Nature!清华大学光学神经网络研究突破
  • FastAPI + React:现代 Web 前后端分离开发的全栈实践指南
  • 【原理】Unity GC 对比 C# GC
  • 电竞酒店和高校宿舍对AI云电竞游戏盒子的需求有什么不同?
  • 静态资源保存插件横评:Save All Resources 与 ResourcesSaverExt 哪个更适合你?
  • 无人机基础知识
  • 测绘级组合导航如何重新定义大型无人机的高精度导航标准?
  • 用本地代理 + ZIP 打包 + Excel 命名,优雅批量下载跨域 PDF
  • PDF转图片需要用到什么技术?苹果手机怎样将PDF转为jpg?
  • HTML/CSS 实战知识点总结:从基础到常用效果全解析
  • 2025 世界机器人大会启示录:机构学 × AI × 视频链路的融合之路
  • 【低空安全】低空安全简介
  • 27.Linux 使用yum安装lamp,部署wordpress
  • Kafka 零拷贝(Zero-Copy)技术详解
  • 【学习嵌入式-day-27-进程间通信】
  • 开放最短路径优先协议
  • Read View 在 MVCC 里如何工作的?
  • DSP音频算法工程师技能2
  • IDE开发系列(2)扩展的IDE框架设计
  • GNhao/GN号,海外SIM号怎么注册详细步骤!
  • 纯前端表格控件SpreadJS v18.0 Update1正式发布——集成AI智能化插件
  • 大数据计算引擎(一)——Spark
  • gdb的load命令和传给opeocd的monitor flash write_image erase命令的区别
  • 如何实现前后端交互以及方法传参中传字段和传对象的区别和方法。
  • 音乐怎么测试?正在播放音乐,中途拔掉u盘,再次插上u盘,是怎么播放的?