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

LeetCode100-189轮转数组

本文基于各个大佬的文章

上点关注下点赞,明天一定更灿烂!


前言

        Python基础好像会了又好像没会,所有我直接开始刷leetcode一边抄样例代码一边学习吧。本系列文章用来记录学习中的思考,写给自己看的,也欢迎大家在评论区指导~

        您的每一条评论都会让我更有学习的动力。


一、分析题目

题目在理解上倒是很通俗易懂。

进阶:(原题带的)

  • 尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
  • 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?

二、思路以及代码

既然要我们用尽可能多的方法解答,那么先打暴力吧,嘻嘻

class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""n = len(nums)k = k % n  # 处理k大于n的情况if k == 0:return# 创建新数组rotated = [0] * nfor i in range(n):# 计算每个元素的新位置new_pos = (i + k) % nrotated[new_pos] = nums[i]# 复制回原数组for i in range(n):nums[i] = rotated[i]

上传一下试试。谁懂啊,打暴力选手迎来了春天。

换个思路解答,怎么直接在原数组上操作,也就是不需要借助rotated数组复制呢。

其实右移k个元素相当于把后k个元素移动到最前面,原来的数组再拼接到最后。想要达到类似于滑动这种的想法目前对我来说还是有难度的。不过换一个思路,可以多次反转数组,首先反转整个数,然后反转前k个数,最后反转剩余的数。

class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""n=len(nums)k=k%n#反转数组从start到end的元素def reverse(arr,start,end):while start<end:arr[start],arr[end]=arr[end],arr[start]start+=1end-=1if k==0:return else:# 第一次反转:反转整个数组reverse(nums,0,n-1)# 第二次反转:反转前k个元素reverse(nums,0,k-1)# 第三次反转:反转剩余元素reverse(nums,k,n-1)

上传一下,通过了通过了。

暂时没想出来其他解法,看看题解吧。好吧官方题解也是反转法,ok那这个题完结撒花!今天没鸽,有进步,奖励自己个炸鸡吃吃。

三、本题收获

炸鸡


总结

        只会打暴力,基础一团糟,明天再学吧老铁,别真学会了。

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

相关文章:

  • 20.15 Hugging Face Whisper-large-v2中文微调实战:LoRA+混合精度单卡训练指南,3倍效率省90%显存
  • 正则表达式学习(基础)
  • AUTOSAR进阶图解==>AUTOSAR_RS_Features
  • 电脑隐私安全防护|快速清理Windows系统/浏览器/应用数据,支持文件粉碎与磁盘级擦除!
  • 从MyJUnit反思Java项目的工程实践(版本控制篇)
  • 数据库迁移幂等性介绍(Idempotence)(Flyway、Liquibase)ALTER、ON DUPLICATE
  • RabbitMQ面试精讲 Day 30:RabbitMQ面试真题解析与答题技巧
  • 深入解析MyBatis Mapper接口工作原理
  • Ubuntu24.04配置yolov5
  • 封装的form表单,校验规则(rules)只在提交时触发,为空时点击提交触发,再次输入内容也不显示校验规则(rules)
  • 机器学习】(12) --随机森林
  • Day27 进程管理(PCB、状态、调度、原语与资源管理)
  • pikachu之Over permission
  • 基于SpringBoot的宠物领养系统的设计与实现(代码+数据库+LW)
  • QML中的Connections
  • Vue 3 defineOptions 完全指南:让组件选项声明更现代化
  • vb6编绎COM DLL(ACTIVEX对象)时兼容性设置
  • bisheng 后端初始化数据(main.py > init_data.py)
  • 25072班8.25日 数据结构作业
  • 04-Maven工具介绍
  • kafka 副本集设置和理解
  • 《Spring Boot 进阶:从零到一打造自定义 @Transactional》 ——支持多数据源、动态传播行为、可插拔回滚策略
  • AI系列 - Claude 与 Qwen 模型自动补全对比:谁更胜一筹?
  • 电力系统稳定性的挑战与智能控制新范式
  • 网络与信息安全有哪些岗位:(8)安全审计员
  • C 语言:第 20 天笔记:typedef(类型重命名规则、应用场景与实战案例)
  • 黑客窃取 EDR 检测未检测到的 Windows 机密和凭证
  • 讲解计网中OSI模型及各层作用
  • 网闸和防火墙各有什么长处?
  • ValueTask 实战指南:解锁 .NET 异步编程的性能秘密