当前位置: 首页 > article >正文

Leetcode 283-移动零

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

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

在这里插入图片描述

题解

题解参考自王尼玛
借鉴快排的思想,将0作为哨兵,从左到右将所有不为零的元素和零元素进行交换
1.left指向第一个为零的元素,right指向left后第一个不为零的元素
2.将nums[left]和nums[right]对换
3.left和right继续移到下一个为零和不为零的位置,直至数组遍历结束

class Solution {
    public void moveZeroes(int[] nums) {
        int left=0,right=0;
        while(right<nums.length){
            //left指向第一个为0的元素或者数组长度+1的位置
            while(left<nums.length&&nums[left]!=0) left++;
            right=left+1;
            //right指向第一个为0的元素或者数组长度+1的位置
            while(right<nums.length&&nums[right]==0) right++;
            if(right<nums.length){
                int tmp=nums[left];
                nums[left]=nums[right];
                nums[right]=tmp;
            }
        }
    }
}

http://www.kler.cn/a/457084.html

相关文章:

  • C++ 设计模式:命令模式(Command Pattern)
  • springcloud各个组件介绍
  • 【Vim Masterclass 笔记03】S03L10 + S03L11:Vim 中的文本删除操作以及 Vim 思维习惯的培养(含 DIY 拓展知识点)
  • python读写文件的三种做法
  • 每天40分玩转Django:Django缓存
  • 2024年个人总结
  • FPGA抗单粒子容错的方法
  • 【信息系统项目管理师】高分论文:论信息系统项目的资源管理(阳光信访工作平台)
  • 国家发改委低空经济发展司亮相,CES Asia 2025低空经济展区受关注
  • flask后端开发(5):jinjia中if、for控制语句
  • Erlang语言的数据结构
  • c++入门——c++输入cin和输出cout的简单使用
  • Pandas04
  • 如何测试模型推理性能:从零开始的Python指南
  • 32位MCU主控智能电表方案
  • Linux下编译安装libMesh
  • (带源码)宠物主题商场系统 计算机项目 P10083
  • uni-app(优医咨询)项目实战 - 第7天
  • word无法创建工作文件,检查临时环境变量。
  • 精密缝纫的科技搭档——霍尔传感器
  • 【项目日记(5)】第二层:中心缓存的具体实现(上)
  • HDLBits训练7
  • java使用外部配置文件,springboot使用外部配置文件
  • 小程序基础 —— 08 文件和目录结构
  • 【Android】项目升级时报错 android:style/Holo.Widget
  • 毫米波雷达技术:(九)快时间窗和慢时间窗的概念