算法--数组中排序移动零
程序员文章站
2022-06-27 14:40:39
题目:283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路1:首先先找出数组中为0的元素,然后把它删除,用append()函数在末尾添加0.Code:class Solution: def moveZeroes(self, nums: List[int]) -> None...
题目:
283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
解题思路1:
首先先找出数组中为0的元素,然后把它删除,用append()函数在末尾添加0.
Code:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
count = 0
wei = 0
n = len(nums)
while count < n:
if nums[wei] == 0:
nums.pop(wei)
nums.append(0)
else:
wei += 1
count += 1
运行结果:
解题思路2:
双指针,右指针不断向右移动,每次当右指针指向非零数时,左右指针对应的数交换,同时左指针向右移。
Code:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
l = len(nums)
left = right = 0
while right < l:
if nums[right] != 0:
nums[left],nums[right] = nums[right],nums[left]
left += 1
right += 1
运行结果:
本文地址:https://blog.csdn.net/Kinght_123/article/details/109807172
上一篇: 深入了解一些Android动画