网络编程与渗透技术笔记

LeetCode算法题:移动零

红帝
1年前发布

题目内容:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 :

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

答案:


def move_zeroes(nums):
    # 初始化一个指针指向非零元素的下一个位置
    write_index = 0
    # 遍历数组
    for read_index in range(len(nums)):
        # 如果当前元素不是0
        if nums[read_index] != 0:
            # 将当前元素放到write_index的位置
            nums[write_index] = nums[read_index]
            # 将write_index向前移动一位
            write_index += 1
            # 遍历结束后,write_index之后的位置都应该是0
    # 因为我们只需要保证非零元素在write_index之前,所以直接在后面填充0即可
    for i in range(write_index, len(nums)):
        nums[i] = 0
nums = [0, 1, 0, 3, 12]
move_zeroes(nums)
print(nums)  # 输出应该是 [1, 3, 12, 0, 0]
© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
取消
易航博客
SSL