【数组】【快慢双指针】删除有序数组中的重复项+移除元素+删除有序数组中的重复项II

news2024/12/22 18:36:03

今天趁热打铁,接着刷了几道标签是【数组】的题,基本都是双指针就能解决。

1、删除有序数组中的重复项

在这里插入图片描述
该题对应力扣网址

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int i,j;
        int count = 0;
        int n = nums.size();
        nums.push_back(nums[n-1]);
        vector <int> nums1;
        for(i=0;i<n;i++){
            if(nums[i]==nums[i+1]){
                continue;
            }
            nums1[count] = nums[i];
            count++;
        }
        for(j=0;j<count;j++){
            nums[j]=nums1[j];
        }
        return count;
    }
};

在这里插入图片描述
搜了一下,原来vector是动态分布内存,在没有进行初始化之前不能使用下标的方式进行访问。改了之后就没问题了。

AC代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int i,j;
        int count = 0;
        int n = nums.size();
        vector <int> nums1(n,0);
        for(i=0;i<n;i++){
            if(i!=0 && nums[i]==nums[i-1]){
                continue;
            }
            nums1[count] = nums[i];
            count++;
        }
        for(j=0;j<count;j++){
            nums[j]=nums1[j];
        }
        return count;
    }
};

我的思路是又开辟了一个新的vector,把筛选之后不重复的存到新vector里,最后吧新vector的值赋给旧vector。
看了题解之后才知道,直接用双指针做其实更方便,不过和之前三数之和双指针不一样的地方是,这里用的是移向同一方向的快慢指针
具体方法在下面的题目中介绍。

2、移除元素

在这里插入图片描述

该题对应力扣网址

AC代码

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int i,j;
        int n = nums.size();
        //快慢指针
        int first=0,low=0;
        while(first<n){
            if(nums[first]==val){
                first++;
                continue;
            }
            nums[low] = nums[first];
            low++;
            first++;
        }
        return low;
    }
};

这道题我就用了快慢双指针的思想,因为需要在原本数字的基础上进行修改,所以就需要first指针走快点进行比较,low指针走慢点进行修改。代码还是写的挺浅显易懂的就不赘述了。

3、删除有序数组中的重复项ii

在这里插入图片描述

该题对应力扣网址

AC代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int i,j;
        int n = nums.size();
        //快慢指针
        int first=1,low=1;
        //计数器
        int count=1;
        while(first<n){
            if(nums[first]==nums[first-1]){
                count++;
                if(count<=2){
                    nums[low] = nums[first];
                    low++;
                }
                first++;
                continue;
            }
            count = 1;
            nums[low] = nums[first];
            low++;
            first++;
        }
        return low;
    }
};

跟上一个题的思路基本一致,不过写的时候,我也确实考虑到了能不能根据这个gap=2来想方法,不过使用的是count来计数。
去看了题解,它的方法更简洁巧妙,我写出来主要思想,大家就明白的差不多了,它的核心判断条件是nums[slow - 2] != nums[fast]。大家感兴趣的话可以移步去看详细代码。

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

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

相关文章

智慧消防新篇章:可视化数据分析平台引领未来

一、什么是智慧消防可视化数据分析平台&#xff1f; 智慧消防可视化数据分析平台&#xff0c;运用大数据、云计算、物联网等先进技术&#xff0c;将消防信息以直观、易懂的图形化方式展示出来。它不仅能够实时监控消防设备的运行状态&#xff0c;还能对火灾风险进行预测和评估…

手把手教你部署并使用国产开源大模型ChatGLM3-6B

前言 部署一个自己的大模型&#xff0c;没事的时候玩两下&#xff0c;这可能是很多技术同学想做但又迟迟没下手的事情&#xff0c;没下手的原因很可能是成本太高&#xff0c;近万元的RTX3090显卡&#xff0c;想想都肉疼&#xff0c;又或者官方的部署说明过于简单&#xff0c;安…

php遇到的问题

1、 underfined at line 3 in xxx.php , 错误提示&#xff0c;注释这行代码 // error_reporting(DEBUG ? E_ALL : 0); 目录&#xff1a;config/config.php

【第四篇】SpringSecurity的HttpSecurity详解

SpringSecurity的XML文件配置 在配置文件中通过 security:http 等标签来定义了认证需要的相关信息 SpringSecurity的HttpSecurity配置 在SpringBoot项目中,脱离了xml配置文件的方式,在SpringSecurity中提供了HttpSecurity等工具类,这里HttpSecurity就等同于在配置文件中定…

LLM大模型的挑战与未来,挑战大但是机遇更大!

大模型必然是未来很长一段时间我们工作生活的一部分&#xff0c;而对于这样一个与我们生活高度同频互动的“大家伙”&#xff0c;除了性能、效率、成本等问题外&#xff0c;大规模语言模型的安全问题几乎是大模型所面对的所有挑战之中的重中之重&#xff0c;机器幻觉是大模型目…

【Numpy】一文向您详细介绍 np.sqrt()

【Numpy】一文向您详细介绍 np.sqrt() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…

H5单点登录分析介绍(登录状态检验状态透传分析)

文章目录 1、单点登录解决方案1.1、后端保存登录状态1.2、token模式 2、user服务-登录接口2.1、UserController2.2、UserInfoServiceImpl2.3、载荷2.4、响应2.5、Redis Desktop Manager 3、user服务-登录成功获取用户信息回显3.1、UserController3.2、UserInfoServiceImpl3.3、…

FlashDB的TS数据库的标准ANSI C移植验证

本文目录 1、引言2、环境准备3、修改驱动4、验证 文章对应视频教程&#xff1a; 暂无&#xff0c;可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在当今数据驱动的时代&#xff0c;高效可靠的数据存储与管理对于嵌入式系统及物联网(IoT)应用至关重…

DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转

一、实验目的 学习图像旋转的原理&#xff0c;掌握图像的读取方法&#xff0c;并实现图像旋转。 二、实验原理 图像旋转 图像的旋转是指以图像的某一点为原点以逆时针或顺时针旋转一定的角度。其本质是以图像的中心为原点&#xff0c;将图像上的所有像素都旋转一个相同的角…

Axure中继器交互效果

部件库预览链接&#xff1a; https://ezd11a.axshare.com&#xff08;请与班主任联系获取原型文档&#xff09; 支持版本: Axrure RP 8 文件大小: 109KB 文档内容介绍 “翻页”效果 “排序”效果 “全反选”效果 “筛选”效果 “删除”效果 免费领取资料 添加班主任回复 “…

ctfshow-web入门-命令执行(web43-web52)关于黑洞“ >/dev/null 2>1“的处理与绕过

目录 1、web43 2、web44 3、web45 4、web46 5、web47 6、web48 7、web49 8、web50 9、web51 10、web52 1、web43 在上一题 ‘黑洞’ 的基础上新增过滤&#xff1a; preg_match("/\;|cat/i", $c) 问题不大&#xff0c;我们不用分号和 cat 就行&#xff1a;…

Postman接口测试工具详解(高清图例)

一、引言 1. 介绍接口测试的重要性 在当今软件开发领域&#xff0c;接口&#xff08;API&#xff09;已成为不同系统、服务或组件之间交互的桥梁。随着微服务架构的普及&#xff0c;接口的重要性日益凸显。然而&#xff0c;接口的复杂性和多样性也带来了诸多挑战&#xff0c;其…

数据结构笔记补充问题

1、假设线性表L采用单链表存储结构&#xff0c;设计一个算法&#xff0c;在L的数据元素最大值之前插入&#xff08;假设L的各个数据元素值不同&#xff09;数据元素x。 基本思想&#xff0c;先查找到最大元素对应的结点&#xff0c;再在之前插入x对应的结点&#xff1b; 设计算…

我的创作纪念日(1825天)

Ⅰ、机缘 1. 记得是大一、大二的时候就听学校的大牛说&#xff0c;可以通过写 CSDN 博客&#xff0c;来提升自己的代码和逻辑能力&#xff0c;虽然即将到了写作的第六个年头&#xff0c;但感觉这句话依旧受用; 2、今年一整年的创作都没有停止&#xff0c;本年度几乎是每周都来…

DTU为何应用如此广泛?

1.DTU是什么 DTU(数据传输单元)是一种无线终端设备&#xff0c;它的核心功能是将串口数据转换为IP数据或将IP数据转换为串口数据&#xff0c;并通过无线通信网络进行传送。DTU通常内置GPRS模块&#xff0c;能够实现远程数据的实时传输&#xff0c;广泛应用于工业自动化、远程监…

抓包工具 Wireshark 的下载、安装、使用、快捷键

目录 一、什么是Wireshark&#xff1f;二、Wireshark下载三、Wireshark安装四、Wireshark使用4.1 基本使用4.2 过滤设置1&#xff09;捕获过滤器2&#xff09;显示过滤器 4.3 过滤规则1&#xff09;捕获过滤器-规则语法2&#xff09;显示过滤器-规则语法 4.4 常用的显示过滤器规…

纵深发力 持续推进,富格林平台发展势头喜人

自2024年2月1日正式上线以来,富格林互联网投融资平台已迅速崛起,吸引了业内专家学者的高度认可以及广大投资者的青睐。平台规模持续扩大,目前累计注册用户已超过10万人,总投资额突破50亿美元。这一卓越表现不仅体现了平台的稳健运营和出色的投资项目,也展示了其在互联网投融资领…

探索Napier:Kotlin Multiplatform的日志记录库

探索Napier&#xff1a;Kotlin Multiplatform的日志记录库 在现代软件开发中&#xff0c;日志记录是不可或缺的部分&#xff0c;它帮助开发者追踪应用的行为和调试问题。对于Kotlin Multiplatform项目而言&#xff0c;能够在多个平台上统一日志记录的方法显得尤为重要。Napier…

在IDEA中连接数据库

1.点击侧边栏的Database 2.选中你要连接的数据库类型 3.输入用户名、密码&#xff0c;测试连接&#xff0c;没有驱动的话先下载下驱动 4.发现没有数据库&#xff0c;点击1 of 14&#xff0c;选择All schemas&#xff0c;即可显示全部数据库 5.执行sql 如果对您有帮助的话记…

【通义灵码-你的智能编程助手】

通义灵码是由阿里云推出的智能编码辅助工具&#xff0c;基于通义大模型&#xff0c;旨在提高开发者的编码效率和流畅度。它具备以下功能&#xff1a; 「通义灵码&#xff0c;助力你高效 AI 编码」 点击前往使用 行级/函数级实时续写&#xff1a;在编码过程中&#xff0c;根据…