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

Leetcode刷题记录26——轮转数组

题源:https://leetcode.cn/problems/rotate-array/description/?envType=study-plan-v2&envId=top-100-liked

题目描述:
在这里插入图片描述

思路一:
直接将数组后面需要轮转的部分和数组前面不需要轮转的部分拼接即可,有两个值得注意的点:

关键点一:k %= n —— 避免无效旋转
🔍 为什么要这么做?
因为当 k 大于数组长度 n 时,旋转 k 次和旋转 k % n 次的结果是一样的。

比如:

  • 原数组是 [1,2,3,4,5],长度为 5。
  • 如果 k = 7,那么 7 % 5 = 2,也就是说旋转两次就够了。
  • 因为每旋转 n 次,数组就会回到原始状态。

🧠 小贴士
这个技巧不仅适用于数组旋转问题,也广泛用于循环类题目中,用来简化逻辑、提高效率。

关键点二:nums[:] = nums[-k:] + nums[:-k] —— 原地修改列表
这是本题最容易出错的地方!

❗️错误写法:

nums = nums[-k:] + nums[:-k]

这行代码只是让变量 nums 指向了一个新的列表对象,而原来的列表没有被修改。对于需要 “原地修改” 的题目来说,这样的写法会导致函数外部看不到任何变化。

正确写法:

nums[:] = nums[-k:] + nums[:-k]

这个写法会直接替换 nums 列表的内容,而不是创建一个新的列表对象。这样就能确保外部看到的是我们修改后的结果。

🧪 对比示例

a = [1,2,3,4,5]
b = a
a = [6,7,8,9,10]
print(b)  # 输出 [1,2,3,4,5]a = [1,2,3,4,5]
b = a
a[:] = [6,7,8,9,10]
print(b)  # 输出 [6,7,8,9,10]

代码如下:

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 %= nnums[:] = nums[-k:] + nums[:-k]

执行时间如下:
在这里插入图片描述

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

相关文章:

  • 数字时代,如何为个人信息与隐私筑牢安全防线?
  • Laravel Octane 项目加速与静态资源优化指南
  • MySQL基本查询(二)
  • QT6(32)4.5常用按钮组件:Button 例题的代码实现
  • 【python】【UV】一篇文章学完新一代 Python 环境与包管理器使用指南
  • 手机的数据楚门世界是如何推送的
  • word交叉引用图片、表格——只引用编号的处理方法
  • 4.27-5.4学习周报
  • 【KWDB 创作者计划】技术解读:多模架构、高效时序数据处理与分布式实现
  • ubuntu的libc 库被我 sudo apt-get --reinstall install libc6搞没了
  • WPF之ProgressBar控件详解
  • 学习:困?
  • Nginx部署Vue+ElementPlus应用案例(基于腾讯云)
  • 基于Redis实现-UV统计
  • Linux:系统延迟任务及定时任务
  • 柔性PZT压电薄膜多维力传感器在微创手术机器人的应用
  • [英语单词] from under
  • 【STM32】定时器
  • React memo
  • 《操作系统真象还原》调试总结篇
  • 在pycharm profession 2020.3上安装使用xlwings
  • 【CTFer成长之路】XSS的魔力
  • 个人健康中枢的多元化AI硬件革新与精准健康路径探析
  • JVM 如何使用性能分析工具定位代码中的性能问题?
  • 博弈论思维——AI与思维模型【90】
  • Elasticsearch 常用的 API 接口
  • npm,yarn,pnpm,cnpm,nvm,npx包管理器常用命令
  • 数字智慧方案5976丨智慧农业顶层设计建设与运营方案(59页PPT)(文末有下载方式)
  • npm命令介绍(Node Package Manager)(Node包管理器)
  • 2d 追加点