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

《双指针篇》---移动零

题目传送门 

这道题可以归类为 数组划分/数组分块 。

题目制定了一个规则,我们可以在这个规则下,将数组划分为若干个区间。

这道题让我们把所有非零元素移动到左边。所有零元素移动到右边。

将数组划分为:

左区间非0;

右区间:全0

解决这类我们使用双指针算法

class Solution {
        public void moveZeroes(int[] nums) {
            //定义left和right双指针。并在right<n的情况下循环。
            //如果nums[right] != 0则交换left和right指向的元素。
            //若等于零则right++。
            //保证left之前的数据非零。left指向第一个零。
            //right之后的数据待处理。
            int left = 0,right = 0;
            int n = nums.length;
            while(right < n){
                if(nums[right] != 0){
                    int temp = nums[left];
                    nums[left] = nums[right];
                    nums[right] = temp;
                    left++;
                }
                right++;
            }
        }
}


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

相关文章:

  • vscode 设置
  • Docker部署Redis
  • Java定时任务不明原因挂掉(定时任务挂掉)以及建议
  • NLP自然语言处理分词模块HanLP
  • springboot基于微信小程序的传统美食文化宣传平台小程序
  • 粒子群优化 (PSO, Particle Swarm Optimization) 算法详解及案例分析
  • 「Mac畅玩鸿蒙与硬件20」鸿蒙UI组件篇10 - Canvas 组件自定义绘图
  • Spring Boot 与 Vue 共筑电影院选票新体验
  • Kong Gateway 指南
  • HTML 基础标签——链接标签 <a> 和 <iframe>
  • Javaweb 实验4 xml
  • 国内百家SRC平台
  • 20241102解决荣品PRO-RK3566开发板刷Rockchip原厂的Buildroot使用荣品的DTS出现
  • Vue基础知识——async指令、scope和样式穿透
  • Maven(20) 如何使用Maven进行版本管理?
  • npm入门教程18:npm发布npm包
  • CVPR2024:完全测试时域适应​​​​(Test-time Adaptation)的目标检测
  • [实战-12] flinkSql 时间属性
  • 互联网技术比游戏后端技术领先十年吗?
  • Android Pair
  • Yocto中的DISTRO和MACHINE的含义与机制
  • 使用 Java 实现从搜索引擎批量下载图片
  • 【STM32】内存管理
  • D55【python 接口自动化学习】- python基础之模块与标准库
  • solidity中的Error和Modifier详解
  • 构建高效信息学科平台:Spring Boot实践