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

【LeetCode刷题】移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

方法思路

  1. 定义指针 k:用于记录非零元素应该放置的位置,初始为 0
  2. 遍历数组:将所有非零元素按原相对顺序移动到 k 指向的位置,每放置一个非零元素,k 自增 1
  3. 补零操作:遍历结束后,将 k 到数组末尾的所有位置赋值为 0,完成 “将 0 移到末尾” 的操作。

Python代码:

from typing import Listclass Solution:def moveZeroes(self, nums: List[int]) -> None:k = 0  # 记录非零元素的放置位置for i in range(len(nums)):if nums[i] != 0:nums[k] = nums[i]k += 1# 将剩余位置填充为0for i in range(k, len(nums)):nums[i] = 0# 主程序用于测试
if __name__ == "__main__":# 测试示例1nums1 = [0, 1, 0, 3, 12]solution = Solution()solution.moveZeroes(nums1)print("示例1结果:", nums1)# 测试示例2nums2 = [0]solution.moveZeroes(nums2)print("示例2结果:", nums2)

LeetCode提交代码:

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""from typing import Listk = 0  # 记录非零元素的放置位置for i in range(len(nums)):if nums[i] != 0:nums[k] = nums[i]k += 1# 将剩余位置填充为0for i in range(k, len(nums)):nums[i] = 0

程序运行截图展示:

总结

本文介绍了一种原地移动数组中所有零元素到末尾的算法。通过使用双指针法,定义指针k记录非零元素位置,首先遍历数组将所有非零元素前移,保持原有顺序;然后在剩余位置补零。该算法时间复杂度为O(n),空间复杂度O(1),满足题目要求。Python实现代码展示了示例测试结果,验证了算法的正确性。该方法高效地解决了在不复制数组情况下移动零元素的问题,适用于LeetCode等相关编程题目。

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

相关文章:

  • 江苏省建设厅网站公示腾讯企业邮箱注册申请官网
  • 本地部署 Stable Diffusion3.5!cpolar让远程访问很简单!
  • UE_ControllRig交互
  • Swift-snapKit使用
  • Hello-Agents第二章深度解析:智能体的进化之路——从符号逻辑到AI原生
  • 51单片机汇编实现DHT11读取温湿度
  • LiveCharts.Wpf 控件的使用
  • 柔性软风管-测量统计一键出量
  • 告别手动录财报!财务报表OCR识别解决方案选型指南
  • (128页PPT)智慧化工厂区一体化管理平台建设方案(附下载方式)
  • jsp网站建设项目实战总结怎么做网站统计
  • 【Rust 探索之旅】Rust 全栈 Web 开发实战:从零构建高性能实时聊天系统
  • 【Rust 探索之旅】Tokio 异步运行时完全指南:深入理解 Rust 异步编程与源码实现
  • 个人网站做经营性crm销售管理系统功能
  • Ubuntu 22.04 Docker 安装指南
  • C++基础语法篇二 ——引用、内联和空指针
  • 有没有做兼职的好网站十堰网络公司排名
  • vscode中claude code插件代理地址设置
  • 网页制作与网站管理在线销售管理系统
  • 如何使用 vxe-table 实现右键菜单异步权限控制
  • 11月10日学习总结--初识numpy
  • 前后端通信加解密(Web Crypto API )
  • 基于数字图像相关(DIC)技术的机械臂自动化焊接残余应力全场变形高精度测量
  • XTOM-TRANSFORM-ROB:面向大尺寸构件的移动式非接触三维扫描与自动化质量检测
  • PyWinInspect:pywinauto 桌面自动化开发伴侣,集成 Inspect 元素检查 + 定位代码自动生成,效率大提升!
  • 个人做什么网站软件技术专升本难吗
  • HarmonyOS:ArkUI栅格布局系统(GridRow/GridCol)
  • 电商设计师常用的网站wordpress 获取分类地址
  • 开放签电子签章系统3.2版本更新内容
  • 电子商务的网站建设过程辽宁沈阳网站建设