算法刷题:移动零

.

在这里插入图片描述

题目链接

移动零

详解

题目要求我们要把数组中所有的零都移动到数组的末尾,且要求其余数字顺序不改变.这道题,我们使用到的是双指针算法:
利用两个指针,将数组分为三个部分,
在这里插入图片描述
三个区间分别为

  1. [0,desc]
  2. [desc+1,cur-1]
  3. [cur,n-1]
    在0到cur-1之间,表示已经校验的部分

cur

因为cur指针是用来遍历整个数组的,那么它的初始值应该为0,且以n-1为末值.

desc

因为desc表示的是非零元素的最后一个数,那么它在一开始是没有非零的数字的,所以这里给它赋值为-1,

算法原理

当nums[cur]==0时,只需要使得cur++,因为这样正好可以使得cur的左边是已校验的零区域
当nums[cur]!=0时,为了满足上面的三个区域,应该将当前非零值放在非零值区域的最后一个,也就是desc+1处,而且desc+1处的数字正好也是零区域的第一个,所以,将nums[cur]与nums[desc+1]进行交换,然后将cur与desc进行+1操作,这样就又使得数组满足了上面的三个区域的条件

答案

class Solution {
   
    public void moveZeroes(int[] nums) {
   
        int cur = 0;
        int desc = -1;
        while(cur<nums.length){
   
            if(nums[cur]!=0){
   
                swap(nums,desc+1,cur);
                desc++;
            }
            cur++;
        }
    }
    public void swap(int[]nums,int a ,int b){
   
        int tmp = nums[a];
        nums[a]=nums[b];
        nums[b]=tmp;
    }
}

相关推荐

  1. 移动算法(leetcode第283)

    2024-02-11 09:18:01       55 阅读
  2. 算法:283. 移动

    2024-02-11 09:18:01       28 阅读
  3. 面试算法-138-移动

    2024-02-11 09:18:01       33 阅读
  4. LeetCode 热 100——283. 移动

    2024-02-11 09:18:01       62 阅读
  5. LeetCode-热100:283.移动

    2024-02-11 09:18:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-11 09:18:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-11 09:18:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-11 09:18:01       87 阅读
  4. Python语言-面向对象

    2024-02-11 09:18:01       96 阅读

热门阅读

  1. 数据备份和恢复

    2024-02-11 09:18:01       44 阅读
  2. STL演讲比赛流程管理系统

    2024-02-11 09:18:01       35 阅读
  3. python如何用glob模块匹配路径

    2024-02-11 09:18:01       44 阅读
  4. LeetCode //C - 1137. N-th Tribonacci Number

    2024-02-11 09:18:01       45 阅读
  5. 【算法竞赛题目 & 题解收集】状压DP

    2024-02-11 09:18:01       49 阅读
  6. Jupyter的全面探索:从入门到高级应用

    2024-02-11 09:18:01       41 阅读
  7. 深入了解 MySQL 数值型函数

    2024-02-11 09:18:01       47 阅读
  8. 网络术语、接口和协议简介

    2024-02-11 09:18:01       44 阅读
  9. 云原生之基石-容器Docker

    2024-02-11 09:18:01       53 阅读
  10. 在gtkmm4 中检索子控件 (children)

    2024-02-11 09:18:01       49 阅读
  11. uniapp v-if和v-for优先级问题

    2024-02-11 09:18:01       45 阅读