数组-Leetcode-283

84 阅读1分钟

0️⃣python数据结构与算法学习路线
学习内容:

  • 基本算法:枚举、排序、搜索、递归、分治、优先搜索、贪心、双指针、动态规划等…
  • 数据结构:字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、数组、队列、栈、树、图、堆等…

题目:

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

输入输出:

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

解题思路:

看到0就删除
在字符串尾部添加需要的0

算法实现:

方法一:

class Solution(object):
    def moveZeroes(self, nums):
        count = i = 0
        while(i<len(nums)):
            if nums[i] == 0:
                del nums[i]
                count += 1
            else:
                i += 1
        nums.extend([0]*count)

出现问题:

  1. 自己的思路:
class Solution(object):
    def moveZeroes(self, nums):
        l =len(nums)
        for i in nums:
            if i == 0:
                del i
        l1 = len(nums)
        for i in range(l-l1):
            nums.append(0)
        return nums

忽略了删除元素之后nums长度变短了,所以不再有nums[l],看到题解中使用计数解决了这个问题