283.移动零

class Solution {
    // 移动零到数组末尾,同时保持非零元素的原有顺序
    public void moveZeroes(int[] nums) {
        int n = nums.length; // 数组长度
        int left = 0, right = 0; // 双指针:left指向待替换位置,right用于遍历
        while (right < n) { // 遍历整个数组
            if (nums[right] != 0) { // 发现非零元素
                swap(nums, left, right); // 将其交换到left的位置
                left++; //  左指针右移,确保左侧都是已处理的非零元素
            }
            right++; // 右指针始终右移,继续探索未处理的元素
        }
    }

    // 交换数组中两个元素的位置
    private void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }
}
posted @ 2025-05-22 16:11  星星永远发着光  阅读(9)  评论(0)    收藏  举报