力扣80:删除有序数组中重复项

news2024/10/25 11:14:43

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例 1:

输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,1,2,3,3]
输出:7, nums = [0,0,1,1,2,3,3]
解释:函数应返回新长度 length = 7,并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3不需要考虑数组中超出新长度后面的元素。

思想:数组中的元素小于等于2时,不需要进行任何操作。只需要从第三个元素开始处理,将第三个个元素与第一个元素进行比较,如果为重复元素,则将快指针往后移动,出现不同时,则将慢指针往后移动,最后数组中剩下的元素个数为慢指针指向的下标。

代码:

int removeDuplicates(int* nums, int numsSize) {
    if(numsSize<=2){
        return numsSize;
    }
    int low=2,high=2;
    while(high<numsSize){
        if(nums[high] != nums[low-2]){
            nums[low]=nums[high];
            low++;
        }
        high++;
    } 
    return low;
}

时间复杂度O(n);空间复杂度O(1)

注意:根据上述代码,如果只出现k次,可以总结如下:

int removeDuplicatesx(int* nums, int numsSize,int k) {
    if(numsSize<=k){
        return numsSize;
    }
    int low=k,high=k;
    while(high<numsSize){
        if(nums[high] != nums[low-k]){
            nums[low]=nums[high];
            low++;
        }
        high++;
    } 
    return low;
}

int removeDuplicates(int* nums, int numsSiz )  {
    return removeDuplicatesx(nums, numsSiz,2 );

}

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

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

相关文章

基于Java+SpringBoot+Vue的水果购物网站的设计与实现

基于JavaSpringBootVue的水果购物网站的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1…

【C++基础编程】一、初识C++

文章目录 1、编程语言是什么2、进制3、第一个C程序4、注释 一、初识C 1、编程语言是什么 我们编写程序&#xff0c;就是希望与计算机进行交流&#xff0c;让计算机帮助我们实现我们期望的效果。从这点出发&#xff0c;其实和人与人之间的沟通交流是一样的。两个人如果需要正常…

8.MySQL复合查询

目录 复合查询基本查询回顾多表查询 - 笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from中使用子查询 合并查询unionunion all 表的内连和外连内连接外连接左外连接右外连接 复合查询 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;在实际开发中这远远…

正点原子阿尔法ARM开发板-IMX6ULL(十)——用CRT完成串口验证与DDR3/RGBLCD简述

文章目录 一、串口实验1.1 bsp_uart.c 二、DDR3三、关于RGBLCD 小唠叨&#xff1a; 我发现我学习效率上&#xff0c;看文本信息时候&#xff0c;获取信息是很快的&#xff0c;可能10分钟看个pdf比看30分钟的视频&#xff0c;效率来的更高一点。比如学python&#xff0c;应该多看…

整流器滤波电路

一、整流器滤波电路概述 整流器滤波电路的主要功能是将交流电&#xff08;AC&#xff09;转换为直流电&#xff08;DC&#xff09;&#xff0c;并通过滤波器减少波动以输出稳定的直流电。其工作原理主要分为两个部分&#xff1a;整流部分和滤波部分。 二、整流电路 整流电路是…

AnaTraf | 网络性能监控与TCP响应时延:保障高效运维的核心要素

http://www.anatraf.com 网络作为业务运行的核心&#xff0c;直接影响着业务的连续性和用户体验。为了确保网络的高效性和稳定性&#xff0c;网络性能监控成为IT运维工作中的重要一环。TCP响应时延则是衡量网络性能的重要指标之一。本文将探讨如何通过网络性能监控和优化TCP响…

win10 有线网络变自带的wifi热点

① 首先确定自己的台式机或者笔记本带是否有无线网卡 win10查看无线网开 自带的wifi热点打不开——解决办法 ②win 搜索 “”移动热点“” 1: 打开热点 通过wlan 2: 编辑 热点名称密码即可 完成&#xff0c;有线网络变私人热点 手机 其他设备连接即可使用

图像分割-DeepLab

DeepLabV3源码链接&#xff1a;https://github.com/bubbliiiing/deeplabv3-plus-pytorch&#xff08;打不开私信我获取&#xff09; 一、简介 一般的模型如Unet一般用于医学领域&#xff0c;小目标&#xff0c;如细胞分割。 为了增大感受野&#xff08;从而更好的获得全局特征…

Linux 基础io_理解文件系统_软硬链接_动静态库

一.磁盘 1.磁盘物理结构 盘片 磁盘可以有多个磁片&#xff0c;每个磁片有两个盘面&#xff0c;每个盘面都对应一个磁头&#xff0c;都可以存储数据。 磁道 扇区 磁道是指在盘面上&#xff0c;由磁头读写的数据环形轨道。每个磁道都是由一圈圈的圆形区域组成&#xff0c;数据…

操作系统期末|考研复习知识点汇总 - 持续更新

本文将根据个人学习进度对b站王道408课程以及题目考察的知识点进行整合&#xff0c;视频中详细的导图将会直接复用&#xff0c;并且将会对一些重点知识进行扩展以及一些思维导图的补充&#xff0c;目前第三章内容正在整理中…… 一&#xff1a;计算机系统概述 1.1操作系统概念…

解锁PDF权限密码

目录 背景: 定义与功能&#xff1a; 过程&#xff1a; 主要功能&#xff1a; 使用方式&#xff1a; 使用限制&#xff1a; 注意事项&#xff1a; 总结&#xff1a; 背景: 前段时间自己设置了PDF文件的许可口令&#xff0c;忘了口令导致自己无法编辑内容等&#xff0c;这…

7、Nodes.js包管理工具

四、包管理工具 4.1 npm(Node Package Manager) Node.js官方内置的包管理工具。 命令行下打以下命令&#xff1a; npm -v如果返回版本号&#xff0c;则说明npm可以正常使用 4.1.1npm初始化 #在包所在目录下执行以下命令 npm init #正常初始化&#xff0c;手动…

docker基础使用创建固定硬盘大小为40G的虚拟机

在docker中创建的服务器&#xff0c;匹配出容器id&#xff0c;服务器ip&#xff0c;服务器核数&#xff0c;服务器内存&#xff0c;服务器硬盘空间 for i in $(docker ps | grep -aiE web | awk {print $1});do echo $i; docker inspect $i|grep -aiE ipaddr|tail -1|grep -ai…

Spring Boot 依赖注入为 null 问题

目录 问题 省流 代码复现 TestService TestAspect TestController 源码分析 AbstractAutoProxyCreator CglibAopProxy Enhancer 问题 工作中&#xff0c;在负责的模块里使用 DubboService 注解注册了一个 dubbo 接口&#xff0c;给定时任务模块去调用。在自我调试阶…

使用Bert+BiLSTM+CRF训练 NER任务

使用的数据集在这里E-Commercial NER Dataset / 电商NER数据集_数据集-阿里云天池 针对面向电商的命名实体识别研究&#xff0c;我们通过爬取搜集了淘宝商品文本的标题&#xff0c;并标注了4大类&#xff0c;9小类的实体类别。具体类型及实体数量如下 针对面向电商的命名实体…

解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)

目的&#xff1a;采用一样的标定参数&#xff0c;matlab中和opencv中的立体矫正图像是一样的吗&#xff1f;不一样的话怎么让它们一样&#xff1f; 结论&#xff1a;不一样。后文为解决方案。 原因&#xff1a;注意matlab的标定结果在matlab中的用法和在opencv中的用法不一样&a…

OpenCv-01

使用opencv对图像进行一些简单的处理 首先知道自己的工作目录 import os cwdos.getcwd() 命名一张图片 my_imagelenna.png 获得图片路径 image_pathos.path.join(cwd,my_image) import cv2 imagecv2.imread(my_image) #imread()函数将图片转换为ndarray数组 image.sh…

大数据新视界 --大数据大厂之 Snowflake 在大数据云存储和处理中的应用探索

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

探索华为云DataArts Insight:数据智能的新引擎

在快速发展的数字化时代&#xff0c;数据已经成为企业最宝贵的资产。如何有效地管理和利用这些数据&#xff0c;以实现商业价值&#xff0c;是每个企业需要面对的重要挑战。华为云DataArts Insight平台应运而生&#xff0c;作为一款强大的数据智能解决方案&#xff0c;它帮助企…

STANFORD SR570 斯坦福 SR570 前置放大器

斯坦福&#xff08;Stanford&#xff09;STANFORD SR570前置放大器&#xff0c;作为音频与电子测量领域的璀璨明珠&#xff0c;以其无与伦比的性能与精湛的工艺&#xff0c;赢得了全球专业人士的广泛赞誉。这款前置放大器不仅是技术的集大成者&#xff0c;更是艺术与科学的完美…