【双指针算法】移动零

news2024/10/16 16:44:22

1.题目解析

2.算法分析

可以归结为数组划分/数组分块(采用双指针算法)-->利用数组下标充当指针

(1)首先定义两个指针 

  • dest:已处理的区间内,非零元素的最后一个位置
  • cur:从左往右扫描数组,遍历数组

(2)将数组划分为三个部分:

  • [0,dest]:已处理的元素,全部为非0
  • [dest+1,cur-1] :全部为0
  • [cur,n-1]:待处理元素

(3)cur从前往后移动的过程

  • 遇到0,直接cur++
  • 遇到非0元素,swap(des+1,cur),cur++,des++

双指针算法是快排最核心的一步,设置基准元素tmp,左边让他都小于tmp,右边让他都小于tmp

3.代码编写

class Solution {
    public void moveZeroes(int[] nums) {
        int dest=-1;
        int cur=0;
       while(cur<nums.length){
            if(nums[cur]==0){
                cur++;
            }else{
                int tmp=nums[dest+1];
                nums[dest+1]=nums[cur];
                nums[cur]=tmp;
                cur++;
                dest++;
            }
        }
    } 
}

4.复杂度分析

时间复杂度:O(N)

空间复杂度:O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stm32+Esp8266连接阿里云程序移植教程(MQTT协议)

Stm32Esp8266连接阿里云程序移植教程&#xff08;MQTT协议&#xff09; 一、前期准备二、移植过程三、程序的使用3.1 连接上阿里云3.2 传输用户数据到阿里云3.3 解析从阿里云下发给用户的数据3.4 关于调试接口 一、前期准备 自己要的工程文件移植所需的文件&#xff08;如下图&…

CentOS 7.9安装MySQL

下载Linux版MySQL安装包 下载地址https://downloads.mysql.com/archives/community/ 下载解压后 安装&#xff0c;按照从上至下顺序&#xff0c;一条一条执行即可安装完毕。 进入到rpm所在目录rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-comm…

计算机网络——CDN

空间编码例子&#xff1a;不是发送N个相同颜色值&#xff0c;而是仅发送2个值&#xff0c;颜色和重复个数 时间编码例子&#xff1a;不是发送i1帧的全部编码&#xff0c;而是仅发送帧i差别的地方 视频播放时&#xff0c;先下载manifest file文件——>解析&#xff08;不…

vscode中关闭cmake自动配置

前言 最近误触了一个操作&#xff0c;导致&#xff0c;一旦使用vscode打开项目&#xff0c;就会去配置cmake。或者你一旦更改cmakelists.txt&#xff0c;就会去配置cmake。 这个操作&#xff0c;结果对不对还另说&#xff0c;关键是增加计算机开销&#xff0c;使得vscode打开后…

【华为】配置BGP协议

边界网关协议BGP是一种实现自治系统AS之间的路由可达&#xff0c;并选择最佳路由的距离矢量路由协议。BGP在不同自治系统之间进行路由转发&#xff0c;分为EBGP&#xff08;外部边界网关协议&#xff09;和IBGP&#xff08;内部边界网关协议&#xff09;两种情况。 [A]in g0/0/…

使用docker搭建lnmp运行WordPress

一&#xff0c;部署目的 使用 Docker 技术在单机上部署 LNMP 服务&#xff08;Linux Nginx MySQL PHP&#xff09;。部署并运行 WordPress 网站平台。掌握 Docker 容器间的互联及数据卷共享。 二&#xff0c;部署环境 操作系统&#xff1a;CentOS 7Docker 版本&#xff1…

Spring 的依赖注入的最常见方式

在 Spring 中&#xff0c;依赖注入的方式有多种选择。下面我们来逐一分析它们的特点、适用场景和注意事项&#xff1a; 1. 构造函数注入 构造函数注入要求在对象创建时提供所有依赖。这种方式确保依赖在对象创建后不可变&#xff0c;特别适合必须强制存在的依赖。所有依赖在对…

Windows的Conda环境下使用PlotNeuralNet来绘制神经网络

项目场景&#xff1a; Windows环境下&#xff0c;使用了anaconda的Python环境管理器&#xff0c;使用PlotNeuralNet来绘制神经网络图 问题描述 在运行以下shell命令的时候 cd pyexamples/ bash ../tikzmake.sh test_simple出现了访问被拒绝的错误&#xff0c;如下所示&#x…

【数据结构】:破译排序算法--数字世界的秩序密码(一)

文章目录 一.排序算法概述1.定义和目的2.排序算法的分类2.1比较排序2.2非比较排序 二.插入排序算法1.InsertSort直接插入排序1.1.插入排序原理1.2.插入排序过程1.3.代码实现1.4.复杂度和稳定性 2.ShellSort希尔排序2.1.希尔排序原理2.2.希尔排序过程2.3.代码实现2.4.复杂度和稳…

LeetCode 132. 分割回文串 II(经典必会)

LeetCode 132. 分割回文串 II 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回符合要求的 最少分割次数 。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;1 解释&#xff1a;只需一次分割就可将 s 分割成 [“…

EditPlus安装使用

1.进入EditPlus官网(https://www.editplus.com/)点击第二行蓝字 2.点击More options第一行蓝字 3.点击exe文件进入安装&#xff0c;点击Accept 4.选择下载路径 4.点击editplus.exe 5.在许可证协议中点击yes 6.输入username和regcode即可使用(也可以试用30天)

Leetcode 岛屿数量

首先检查网格是否为空&#xff0c;如果为空&#xff0c;直接返回 0。遍历网格中的每一个元素&#xff0c;当遇到陆地&#xff08;1&#xff09;时&#xff0c;计数器加 1&#xff0c;并且通过 DFS 将与该陆地相连的所有部分标记为已访问&#xff08;即设为 0&#xff09;。DFS …

第 22 章 - 你不能错过的Elasticsearch核心知识点-BM25相关性评分算法(进阶)

文章目录 前言分片对 Elasticsearch 相关性评分的影响BM25 算法和它的变量效果应用将 b b b 值设置为 0将 k 1 k1 k1 设置为0 总结 前言 上一章介绍了 Elasticsearch 的读写优化技巧。本章将深入探讨与 Elasticsearch 相关的 BM25 相关性评分公式。 我们将全面解析 BM25 如…

【Java】C++转Java基础知识

1. Java基础知识 1.1 JDK和JVM 在Java中&#xff0c;JDK称为Java开发工具包(Java Development Kit)&#xff0c;包含了Java开发需要使用的工具包&#xff0c;前面的版本中JRE和JDK是分开的两个文件夹&#xff0c;从Java9开始&#xff0c;JDK中还包含了JRE(Java Runtime Envir…

STM32外设详解——ADC

来源&#xff1a;铁头山羊 基本概念 ①ADC是模数转换器的统称&#xff0c;stm32f103c8t6内部集成了2个12位主次逼近型ADC&#xff0c;外设名称为ADC1、ADC2。 ② 采样深度为12位意味着ADC可以将0~3.3V的模拟电压等比转换为0~4095的数字值&#xff08;分割为2的12次方份&…

猫头虎分享:Python库 Selenium 的简介、安装、用法详解入门教程

&#x1f42f; 猫头虎分享&#xff1a;Python库 Selenium 的简介、安装、用法详解入门教程 &#x1f680; 今天&#xff0c;猫头虎带大家深入了解 Selenium&#xff0c;这是一个非常流行的自动化测试工具&#xff0c;用于浏览器自动化。无论你是进行网页数据抓取&#xff0c;还…

Starrocks表的数据库字段类型及与MySQL 的差异

最近有用到Starrocks&#xff0c;实际使用中基本可以当作mysql来使用&#xff0c;但是数据库字段还是有所不同的。 与MySQL相同或相似的基础类型 数值类型 TINYINT、SMALLINT、INT/INTEGER、BIGINT&#xff1a;在Starrocks和MySQL中的定义和用途基本相似。都是用于存储整数&…

YOLO11改进|注意力机制篇|引入Mamba注意力机制MLLAttention

目录 一、【MLLAttention】注意力机制1.1【MLLAttention】注意力介绍1.2【MLLAttention】核心代码 二、添加【MLLAttention】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP42.5STEP5 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【MLLAttention】注意力机制 1.1【MLLAtte…

[Linux#66][TCP->IP] 面向字节流 | TCP异常 | filesocket | 网络层IP

目录 1. 面向字节流 思考&#xff1a;对于UDP协议来说&#xff0c;是否也存在“粘包问题”呢&#xff1f; 2.TCP 异常情况 3.知识 1.UDP实现可靠传输(经典面试题) 2. 网络抓包 | 爬虫 3.打通文件和 socket 的关系 4.网络层&#xff1a;IP 前置知识 1. 面向字节流 udp…

Java+vue部署版本反编译

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…