【leetcode hot 100 238】移动零

devtools/2025/2/28 23:58:43/

一、暴力解法:循环数组,如果=0则放到最后

class Solution {public void moveZeroes(int[] nums) {int k=0; // 0的个数// k为已经发现0的个数,只要将已经找出的0的前面的数for(int i=0; i<nums.length-k;){if(nums[i]==0){// 移动k++;// k为已经发现0的个数,后面k个0不用动了for(int j=i; j<nums.length-k; j++){ nums[j]=nums[j+1];}// 把倒数第K个数变为0nums[nums.length-k]=0;}if(nums[i]!=0){i++;}}}
}

注意:

  • 第一个for循环,条件为nums.length-k,k为已经发现0的个数,只要将已经找出的0的前面的数
  • 第一个for循环,条件为nums.length-k,k为已经发现0的个数,后面k个0不用动了
  • 考虑存在连续的0,if(nums[i]!=0){i++;},如果移动后的数不为零,则判断后一个(i++)数

二、正确解法:双指针

思路:使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。

class Solution {public void moveZeroes(int[] nums) {int n=nums.length, left = 0, right = 0;while(right<n){if(nums[right]!=0){// 不为0放到左边swap(nums,right,left);left++;}right++;}}public void swap(int[] nums, int a, int b){int tmp=nums[a];nums[a]=nums[b];nums[b]=tmp;}
}

注意:

  • 只需要动一边即可:致力于将左边都设置为非零数,右边自然会变成零

http://www.ppmy.cn/devtools/163473.html

相关文章

RAG 阿里云

RAG-阿里云Spring AI Alibaba官网官网 RAG-阿里云Spring AI Alibaba官网官网 AI应用跑起来&#xff0c;取消一下航班的操作666

AcWing 蓝桥杯集训·每日一题2025

题目链接 : 5437. 拐杖糖盛宴 题意: 有m个不同的糖果和n个不同高度的奶龙, 奶龙可以根据自己的身高去吃糖果,糖果垂直于地面,对于一个糖果都需要让每个奶龙尝试能否吃到,如果吃到则减去相应吃到的长度, 奶龙长高吃掉糖果的长度即可,根据长度进行判断, 分类讨论。 解题思路 : …

精准识别IP应用场景

基于全球领先的IP应用场景识别服务IPv4/IPv6全量数据库&#xff0c;为企业提供高精度、低延迟的场景化解析能力&#xff0c;助您构建更安全、智能的网络生态。 ​精准识别&#xff0c;毫秒响应 全量数据覆盖&#xff0c;依托全球最大的IP地址库&#xff0c;支持IPv4/IPv6双协…

React 源码揭秘 | commit流程

前面文章所描述的都发生在render过程中。React包含两个过程&#xff0c;即render和commit过程&#xff0c;其中render过程是可以打断的&#xff0c;而commit阶段是不可打断的。 commit阶段可以理解是真正的操作DOM的阶段&#xff0c;其消费render阶段打到Fiber节点上的Flag&am…

会话对象 HttpSession 二、HttpSession失效

session失效有如下几个原因&#xff1a; session.invalidate()方法注销sessionsession超时 <session-config><!-- session的超时时间&#xff0c;以分钟为单位 --><session-timeout>1</session-timeout> </session-config>Cookie被禁用

Trae根据原型设计稿生成微信小程序密码输入框的踩坑记录

一、需求描述 最近经常使用Trae生成一些小组件和功能代码&#xff08;对Trae赶兴趣的可以看之前的文章《TraeAi上手体验》&#xff09;&#xff0c;刚好在用uniapp开发微信小程序时需要开发一个输入密码的弹框组件&#xff0c;于是想用Trae来实现。原型设计稿如下&#xff1a;…

第十章:服务器消费者管理模块

目录 第一节&#xff1a;代码实现 1-1.Consumer类 1-2.QueueConsumer类 1-3.QueueConsumerManger类 第二节&#xff1a;单元测试 下期预告&#xff1a; 服务器的消费者管理模块在mqserver目录下实现。 第一节&#xff1a;代码实现 创建一个名为mq_consumer.hpp的文件&#…

若依Vue,tab切换时实现缓存之前的查询条件、不刷新页面、不请求

1、菜单里面的路由地址和缓存 2、页面中对应路由地址&#xff0c;首字母大写驼峰命名