LeetCode 283. Move Zeroes 题解
LeetCode 283. Move Zeroes 题解题目描述给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。请注意 必须在不复制数组的情况下原地对数组进行操作。示例 1输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2输入: nums [0] 输出: [0]解题思路使用双指针一个指针遍历数组另一个指针记录非零元素应该放置的位置代码实现def moveZeroes(nums): non_zero_idx 0 # 将非零元素移到前面 for i in range(len(nums)): if nums[i] ! 0: nums[non_zero_idx] nums[i] non_zero_idx 1 # 后面补零 for i in range(non_zero_idx, len(nums)): nums[i] 0优化版本def moveZeroes(nums): non_zero_idx 0 for i in range(len(nums)): if nums[i] ! 0: # 交换非零元素到前面 nums[non_zero_idx], nums[i] nums[i], nums[non_zero_idx] non_zero_idx 1复杂度分析时间复杂度O(n)空间复杂度O(1)总结本题是双指针技巧的基础应用。关键点使用双指针分别追踪遍历位置和写入位置原地修改不复制数组保持非零元素相对顺序
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2459612.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!