Leetcode.283 移动零

题目描述

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

双指针挪动

Python 实现

复制代码
def moveZeroes(nums: List[int]):
    '''
    移动 0
    :param nums:
    :return:
    '''
    #非0往前移动
    index = 0
    for num in nums:
        if num != 0:
            nums[index] = num
            index += 1
    #末尾补0
    for i in range(index, len(nums)):
        nums[i] = 0
    return nums
复制代码

Java 实现

复制代码
    /**
     * LC 283 移动 0--双指针挪动法
     * @param nums
     */
    public static void moveZeroes(int[] nums) {
        int index = 0;
        for (int n : nums) {
            if (n != 0) {
                nums[index++] = n;
            }
        }
        for (int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
复制代码

双指针交换法

Python 实现

def moveZeroes1(nums: List[int]):
    left, right = 0, 0
    while right < len(nums):
        if nums[right] != 0:
            nums[right], nums[left] = nums[left], nums[right]
            left += 1
        right += 1
    return nums

Java 实现

复制代码
    public static void moveZeroes1(int[] nums) {
        int left = 0, right = 0, temp = 0;
        while (right < nums.length) {
            if (nums[right] != 0) {
                temp = nums[right];
                nums[right] = nums[left];
                nums[left] = temp;
                left++;
            }
            right++;
        }
    }
复制代码

 

posted @   晓枫的春天  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示