283.移动零 关于列表list与remove原理*****
题目: 给定一个数组 nums ,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 注意,该题目要求不开辟行的数组空间,在原数据上进行操作。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 自我解答: 思路1:如同冒泡算法那样,用两个for循环进行遍历,将0依次移动到列表最后面。 缺点:复杂度太高,n^n,上传答案时会报错。 思路2:for循环遍历数组,当该数为0时,remove移除该数, 在这里有两个python知识点。 原本,我是希望先把所有的0删除后,再往后面添加同样数量的0,但是,发现删不掉0的情况 list1 = [0,2,0,0,8,0,8,0,1] class Solution2: def moveZeroes(self, nums): for i in nums: if i ==0: nums.remove(i) # nums.append(0) print(nums) s = Solution2() s.moveZeroes(list1) #[2, 8, 8, 0, 1] 百度了一番发现了其中的奥秘: for循环原理 python中for循环是遍历所有nums下标,然后根据下标遍历列表