(day35)
目录
题目:
题目分析:
解题思路:
解法一:✏
代码实现
解法二:✏
代码实现
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
⭐示例 1:
输入: nums =
[0,1,0,3,12]
输出:
[1,3,12,0,0]
⭐示例 2:
输入: nums =
[0]
输出:
[0]
注意保持非零数的相对顺序,即因为0位置的变动其它非零数的索引都会改变。但如果原例表1的位置在2前,那么移动后1依旧要在2前。
对于列表中0元素的移动到末尾,相当于将0元素删除,然后再添加到末尾。
我们可以使用remov()和appebd()方法实现这一过程。
remove()方法用于删除列表中的元素。remove(要删除的元素)
append()方法用于向列表添加的元素。append(要添加的元素)
appen()函数默认将加入的元素放在列表末尾。
def moveZeroes(nums):
for i in range(nums.count(0)):
nums.remove(0)
nums.append(0)
return nums
使用双指针,通过交换两个指针对应的元素实现将0元素以到末尾。我们可以在列表开头放置两个指针left和right。right指针行移动。
如果遇到非0数那么我们将left指针也向前移动使得left指针和right指针重合,那么交换两个指针对应的元素就是自己和自己交换不会又任何影响。
如果遇到0元素则不移动left指针,但是right指针向前移动。那么left就会在right指针后一个位置。这时候交换两个指针对应的元素那么0元素就会和后一个非0元素互换位置实现0元素的移动。
接着重复这一过程即可。
def moveZeroes(nums):
right = 0
left = 0
while right < len(nums):
if nums[right] != 0:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right += 1
今天就到这,明天见。
❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄