LeetCode —— 复写零(双指针)

news2025/1/11 19:58:36

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目解析

将数组中出现的每个零复写一遍,然后将其他元素向右平移,数组长度不能改变。

法一:使用额外空间的做法

class Solution 
{
public:
    void duplicateZeros(vector<int>& arr) 
    {
        // 定义一个额外的vector
        vector<int> v;
        // 遍历数组
        for(auto&e:arr)
        {
            // 如果该元素不为0,则向新数组中插入一个该元素
            if(e) v.push_back(e);
            // 如果该元素为0,则向新数组中插入两个该元素
            else
            {
                v.push_back(0);
                v.push_back(0);
            }
        }
        // 改变新数组的大小为老数组大小
        v.resize(arr.size());
        // 将老数组赋值给新数组
        arr=v;
    }
};

法二:原地修改的做法

 

 

class Solution 
{
public:
    void duplicateZeros(vector<int>& arr) 
    {
        int n=arr.size();
        int cur=0,dest=-1;
        // 找最后一个复写的元素
        while(cur<n)
        {
            if(arr[cur]==0) dest+=2;
            else dest++;
            if(dest>=n-1) break;
            cur++;
        }
        // 处理边界情况
        if(dest==n)
        {
            arr[n-1]=0;
            cur--;
            dest-=2;
        }
        // 覆盖
        while(cur>=0)
        {
            if(arr[cur]==0)
            {
                arr[dest--]=arr[cur];
                arr[dest--]=arr[cur--];
            }
            else
            {
                arr[dest--]=arr[cur--];
            }
        }
    }
};

 

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

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

相关文章

以指标管理为抓手,亿信华辰助力锦州银行打造全行级数据应用

随着金融数字化转型的持续深入&#xff0c;数据智能的业务化应用等正逐步受到行业关注。锦州银行携手亿信华辰&#xff0c;开展全行级指标管理体系建设&#xff0c;实现指标数据统一管理、统一标准、统一来源、统一汇总、统一加工、统一呈现&#xff0c;以及持续推动基础数据治…

Day56|动态规划part16:647. 回文子串、516. 最长回文子序列、动态规划总结篇

647. 回文子串 leetcode链接&#xff1a;力扣题目链接 视频链接&#xff1a;动态规划&#xff0c;字符串性质决定了DP数组的定义 | LeetCode&#xff1a;647.回文子串 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过…

Mysql--技术文档--索引-《索引为什么查找数据快?》-超底层详细说明索引

索引的概念 在MySQL中&#xff0c;索引是一种数据结构&#xff0c;它被用于快速查找、读取或插入数据。索引能够极大地提高数据库查询的速度。 索引的工作方式类似于图书的索引。如果你想在图书馆找到一本书&#xff0c;你可以按照书名进行查找。书名就像是一个索引&#xf…

0012Java程序设计-springboot基于微信小程序的校园智慧帮系统的设计与实现

摘要目录相关技术2.1 MySQL数据库2.2 SpringBoot框架2.3 uniapp框架2.4 B/S架构 系统设计系统实现开发环境 摘要 随着移动互联网高速发展&#xff0c;手机、移动智能终端设备在生活中有着越来越重要的地位。在高校推崇以人为本的今天&#xff0c;也逐渐重视“移动互联网”技术…

微信小程序集成腾讯im,会话列表数据过多(长列表),卡顿问题的解决

说明 我这边用小程序集成im&#xff0c;然后结合公司的需求&#xff0c;做了一个聊天的小程序&#xff0c;在测试上线的时候没有问题&#xff0c;结果到客户那边&#xff0c;因为他们聊天的人多&#xff0c;会话列表达到了300多条&#xff0c;然后点击会话列表&#xff0c;进入…

【字符串匹配】暴力匹配算法

​ 一、暴力匹配算法原理 暴力匹配算法&#xff0c;也称为朴素字符串匹配算法&#xff0c;是一种简单但不高效的字符串匹配方法。它的原理非常直观&#xff0c;其主要思想是逐个字符地比较文本串和模式串&#xff0c;从文本串的每个可能的起始位置开始&#xff0c;依次检查是…

ESD实时监控监测系统通常包括哪些功能

ESD实时监控监测系统是一种用于监测和控制静电放电的系统。静电放电&#xff08;Electrostatic Discharge&#xff0c;ESD&#xff09;是指由于电荷的不平衡而引起的突发放电现象&#xff0c;可能对电子元器件、设备和工作环境造成损害。 ESD实时监控监测系统通常包括以下功能…

6000+药品靶点在研数据库-<查询工具推荐>

了解在研药物靶点数据对于药物研发、靶点发现和验证、药物安全性评估以及治疗策略优化都具有重要的意义&#xff0c;可以为科学家提供有价值的信息和指导。如在研药物靶点数据为药物研发提供了重要的指导。了解当前正在研究的药物靶点可以帮助科学家了解当前研究的热点领域&…

九州未来入选“AIGC算力产业全景图”

日前&#xff0c;量子位智库发布《AIGC算力全景与趋势报告》&#xff08;以下简称报告&#xff09;&#xff0c;通过广泛调研与深度分析&#xff0c;系统性分析了AIGC算力构成、产业链条&#xff0c;进一步指出了AIGC算力的五新趋势及三大阶段发展预测。其中&#xff0c;九州未…

华为云云服务器评测|初始化配置SSH连接 安装MySQL的docker镜像 安装redis以及主从搭建 7.2版本redis.conf配置文件

目录 引出初始化使用&#xff0c;SSH连接控制台设置密码和配置开放连接的端口在finalshell中建立连接 安装docker&#xff0c;运行MySQL安装docker拉取运行mysql容器 redis的拉取运行redis.conf的配置&#xff08;7.2.0版本&#xff09;准备挂载文件和运行redis的主从搭建&…

企业如何建设主数据管理体系?这篇文章说清楚了

主数据是企业核心的基本业务数据&#xff0c;数据长期存在且应用于多个系统(ERP系统、MES系统、OA系统等)系统内的编码数量成几十万个&#xff0c;并且在不断增长。由于缺乏统一的标准规范&#xff0c;各系统内由于实施商不同、使用单位不同&#xff0c;同数据在各系统内编码不…

8851-LC-MT GE 具有便于现场布线的螺丝端子

8851-LC-MT GE 具有便于现场布线的螺丝端子 例如,两个UDS-TCS提供了与基于PCI的解决方案相同的功能,该解决方案采用16通道板、螺杆终端外壳和屏蔽电缆,但成本将减少247美元(29%)。相对于镍公司基于usb的热电偶产品(usb-9211),USB-TC提供了两倍的通道,但成本降低了24%。 支持…

VB(Visual Basic)程序设计

一&#xff1a;前言 1.发展方向 1.1 学习方向 Web前端学习路线 Java学习路线 嵌入式开发学习路线 如何知道企业的需求技术&#xff1a;去招聘软件看企业的要求 前端、后端、测试、运维、UI、网络安全、游戏开发..... 1.2 学习平台 程序员视频学习平台 1.3 计算机学习资源 …

【C++漂流记】结构体的定义和使用、结构体数组、结构体指针、结构体做函数参数以及结构体中const的使用

结构体&#xff08;struct&#xff09;是C语言中一种重要的数据类型&#xff0c;它由一组不同类型的成员组成。结构体可以用来表示一个复杂的数据结构&#xff0c;比如一个学生的信息、一个员工记录或者一个矩形的尺寸等。 结构体定义后&#xff0c;可以声明结构体变量&#xf…

大数据Flink(七十三):SQL的滚动窗口(TUMBLE)

文章目录 SQL的滚动窗口(TUMBLE) SQL的滚动窗口(TUMBLE) 滚动窗口定义:滚动窗口将每个元素指定给指定窗口大小的窗口。滚动窗口具有固定大小,且不重叠。例如,指定一个大小为 5 分钟的滚动窗口。在这种情况下,Flink 将每隔 5 分钟开启一个新的窗口,其中每一条数都会划…

kubernetes——ingress

简介 ingress: 是k8s内部的一个资源对象ingress controller -> ingress控制器&#xff1a; 是k8s里启动的一个pod&#xff0c;运行的是nginx的镜像&#xff0c;实现k8s内部的service&#xff08;ClusterIP类型&#xff09;的负载均衡 ingress 和ingress controller 的关…

孙哥Spring源码第18集

第18集 refresh()-invokeBeanFactoryPostProcessor-二-ConfigurationClassPostProcessor的处理逻辑 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】【微信号&#xff1a;suns45】 1、为什么PropertySource先处理&#xff1f; 因为Conponent A在处理的过程中 要把…

elementUI时间选择器

<template>//月选择器//:clearable"false" 去掉<div class"monthCard"><el-date-picker:clearable"false"v-model"monthValue"type"month"placeholder"选择月"change"handleChangeMonth($eve…

Linux上安装FTP

1、登录FTP&#xff0c;执行安装命令 yum -y install vsftpd 2、启动FTP服务器&#xff0c;设置开启自启动 systemctl enable vsftpd.service systemctl start vsftpd.service systemctl status vsftpd.service #查看状态, 显示active说明FTP启动成功 3、修改FTP配置文件/et…

一年省1000多话费的方法,具体操作步骤我教你了,只说一遍哟!

你还在使用手机套餐吗&#xff1f; 还在使用定向流量卡吗&#xff1f; 不管你现在使用哪种上网方式&#xff1f;都不如小编说的这种划算&#xff0c;算下来一年可以省下1000多块钱。 ​ 具体操作方法如下小编教你了&#xff0c;信不信由你&#xff1a; 1、可以通过官方客服电…