LeetCode第283题移动零(Python)
LeetCode第283题移动零(Python) 题目描述 解题方法和思路 设定两个索引,交换元素 题目描述 给定一个数组 nums ,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例1: 输入 : [ 0 , 1 , 0 , 3 , 12 ] 输出 : [ 1 , 3 , 12 , 0 , 0 ] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/move-zeroes/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题方法和思路 带*的表示参考其他人的是实现 设定两个索引,交换元素 思路: 初始化索引 p 和 q ,位置为数组中第一个 0 元素出现的地方的索引,例如如下所示: [ 0 , 1 , 0 , 3 , 12 ] ^ p = q 前进 q 索引,碰到非零元素则和 p 索引交换,交换完成后 p 索引自加1 复杂度: 时间复杂度: O ( n ) O(n) O ( n ) 空间复杂度:无需额外数据空间, O ( 1 ) O(1) O ( 1 ) 代码: class Solution : def moveZeroes ( self , nums : List [ int ] ) - > None :