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)
出现问题:
- 自己的思路:
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],看到题解中使用计数解决了这个问题