题目:
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
题目来自:https://leetcode.cn/problems/move-zeroes/
结合题目分析:
1、要求把0移动到数组末尾
2、非零元素相对顺序
3、仅操作原数组(不允许新建数组)
第一次编写该题思路:
1、如果有0,则需要进行从小到大顺序
2、如果没有0,则按照从小到大或从大到小顺序排列(场景2在力扣的题目提交失败,他上面的是按照从大到小的顺排列)
我编写的代码:
class Solution1(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
for i in range(len(nums)):
for j in range(len(nums)):
if len(nums) == j + 1:
break
m = nums[j]
n = nums[j + 1]
if n < m:
nums[j], nums[j + 1] = n, m
for i in range(len(nums)):
m = nums[i]
if m != 0:
nums.extend(nums[:i])
del nums[:i]
break
print(nums)
掌握技术点:
1、双指针求解
2、for求解
双指针扩展知识:
双指针算法:双指针算法 - 知乎