【Leetcode】283. 移动零(Java版)

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

复制代码
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

复制代码
输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104

  • -231 <= nums[i] <= 231 - 1

**进阶:**你能尽量减少完成的操作次数吗?

带测试版

java 复制代码
/**
 * @description:
 * @author: r1ng
 * @time: 2023/7/31 17:26
 */
public class moveZeroes {
    public static void moveZeroes(int[] nums) {
        //考虑特殊情况
        if(nums == null) return;
        //定义两个数组下标i,j
        for(int i = 0,j =0; i < nums.length;i++){
            if(nums[i] != 0){
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j++] = temp;
            }
        }
    }

    public static void main(String[] args) {
        int[] nums = {1,4,0,4,3,8,0,5,3};
        moveZeroes(nums);
        for (int num:nums) {
            System.out.print(num);
        }
    }
}

不带测试版本

java 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        //考虑特殊情况
        if(nums == null) return;
        //定义两个数组下标i,j
        for(int i = 0,j =0; i < nums.length;i++){
            if(nums[i] != 0){
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j++] = temp;
            }
        }
    }
}

b这里我们可以用 0 当做这个中间点,把不等于 0(注意题目没说不能有负数)的放到中间点的左边,等于 0 的放到其右边。 这的中间点就是 0 本身,所以实现起来比快速排序简单很多,我们使用两个指针 i 和 j,只要 nums[i]!=0,我们就交换 nums[i] 和 nums[j++]

相关推荐
二进制person28 分钟前
Java EE初阶 --多线程2
java·开发语言
王哈哈^_^1 小时前
【数据集】【YOLO】目标检测游泳数据集 4481 张,溺水数据集,YOLO河道、海滩游泳识别算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·分类·视觉检测
巴里巴气1 小时前
第73题 矩阵置零
线性代数·算法·矩阵
007php0071 小时前
某游戏大厂 Java 面试题深度解析(四)
java·开发语言·python·面试·职场和发展·golang·php
voice6702 小时前
密码学实验二
算法·密码学·哈希算法
西西学代码2 小时前
Flutter---个人信息(5)---持久化存储
java·javascript·flutter
陈果然DeepVersion2 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(五)
java·spring boot·kafka·向量数据库·大厂面试·rag·ai智能客服
FAFU_kyp2 小时前
Spring Boot 邮件发送系统 - 从零到精通教程
java·网络·spring boot
脚踏实地的大梦想家3 小时前
【Docker】P2 Docker 命令:从Nginx部署到镜像分享的全流程指南
java·nginx·docker
Blossom.1183 小时前
把AI“编”进草垫:1KB决策树让宠物垫自己报「如厕记录」
java·人工智能·python·算法·决策树·机器学习·宠物