80. 删除有序数组中的重复项 II
【中等题】
题目:
给你一个有序数组 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。不需要考虑数组中超出新长度后面的元素。
思路:
【双指针】维护一个区间,left作为左边界,right作为有边界。如果区间大小大于2,就移动数组。如果right元素与left不同的时候,就让 left变成right继续往右走。
代码:
class Solution {
public:int removeDuplicates(vector<int>& nums) {int left = 0, right = 0;while(left < nums.size() && right < nums.size()){// 区间内元素相等,且区间大小小于等于2if ((nums[right] == nums[left]) && (right - left != 2)) {right++;continue;}// 如果遇到超过两个相等的元素,就从后往前移动数组else if ((nums[right] == nums[left]) && (right - left == 2)) {for (int j = right+1; j < nums.size(); j++) {nums[j - 1] = nums[j];}// 删除尾元素,vector数组长度减1nums.pop_back();}// 更新左边界else if (nums[right] != nums[left]) {left = right;}}return nums.size();}
};
运行结果

把while判断条件改成:
while(right < nums.size())
运行结果明显变好:

相关文章:
80. 删除有序数组中的重复项 II
【中等题】 题目: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额…...
CVE-2023-36874 Windows错误报告服务本地权限提升漏洞分析
CVE-2023-36874 Windows错误报告服务本地权限提升漏洞分析 漏洞简介 Windows错误报告服务在提交错误报告前会创建wermgr.exe进程,而攻击者使用特殊手法欺骗系统创建伪造的wermgr.exe进程,从而以system权限执行代码。 影响版本 Windows10 1507 * Wind…...
IDEA遇到 git pull 冲突的几种解决方法
1 忽略本地修改,强制拉取远程到本地 主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新,本地的版本已无用,可以强拉 git fetch --all git reset --hard origin/dev git pull关于commit和pull的先后顺…...
[Unity]UI和美术出图效果不一致
问题描述:美术使用PS在Gamma空间下设计的UI图,导入到Unity,因为Unity使用的是线性空间,导致半透明的UI效果和美术设计的不一致。 解决方案: (一)让美术在线性空间下工作 (二&…...
SpringBoot整合JPA和Hibernate框架
Springboot整合JPAHibernate框架【待完成】 随着MybatisPlus技术的发展,JPA和Hibernate技术已经逐步淘汰 JPA遵循了Hibernate框架规则,目前使用的不多 1、添加依赖 <!--jpa--> <dependency><groupId>org.springframework.boot</…...
Java中文件的创建(三种方式),文件常用的方法
文件的创建 方式1: new File(String pathName) 根据路径构建一个File对象方式2: new File(File parent,String child) 根据父目录文件子路径构建方式3: new File(String parent,String child) 根据父目录子路径构建 代码: //方…...
Spring boot中调用C/C++(dll)
添加JNA依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version> </dependency>准备C代码/C代码 如下是C代码,文件名:xizi.c #include <std…...
【Apollo学习笔记】——规划模块TASK之PATH_DECIDER
文章目录 前言PATH_DECIDER功能简介PATH_DECIDER相关配置PATH_DECIDER总体流程路径决策代码流程及框架MakeStaticObstacleDecision PATH_DECIDER相关子函数参考 前言 在Apollo星火计划学习笔记——Apollo路径规划算法原理与实践与【Apollo学习笔记】——Planning模块讲到……S…...
Lua学习(二)
Lua基础学习 7. lua函数8. lua运算符8.1 算数运算符8.2 关系运算符8.3 逻辑运算符8.4 其他运算符 9. lua字符串9.1 字符串格式化9.2 匹配模式 10. lua数组11. lua迭代器11.1 Lua table 12. lua 模块12.1 加载机制12.2 C 包 接着上一篇的内容。Lua学习(一)…...
制作鲜花商城小程序的详细步骤
如果你是一个新手商家,想要进入鲜花团购市场,但是不知道如何制作一个小程序商城,那么这篇文章就是为你准备的。以下是制作鲜花团购小程序商城的详细步骤: 1. 登录乔拓云平台后台,进入商城管理页面 首先,你需…...
Ubuntu20以上高版本如何安装低版本GCC
安装了Ubuntu 20.04之后,通过命令行 sudo apt-get install build-essential安装gcc,再通过命令行 gcc -v可查看gcc版本为gcc13 如果想用低版本的gcc,比如gcc4.8,尝试输入命令 sudo apt-get install gcc-4.8会提示找不到gcc4.8的…...
context.WithCancel()的使用
“ WithCancel可以将一个Context包装为cancelCtx,并提供一个取消函数,调用这个取消函数,可以Cancel对应的Context Go语言context包-cancelCtx[1] 疑问 context.WithCancel()取消机制的理解[2] 父母5s钟后出门,倒计时,父母在时要学习,父母一走…...
vue3中引入百度地图
话不多说直接开干 1.第一种方式 百度地图地址 打开 https://lbsyun.baidu.com/index.php?title%E9%A6%96%E9%A1%B5 然后点进去地图 然后再这个功能里面选择一个地图,然后跳转页面 然后一直下滑 滑到底部 点击这个 跳转到这个页面 然后点击进入demo这个 然后到这个…...
【Linux-Day8- 进程替换和信号】
进程替换和信号 问题引入 我们发现 终端输入的任意命令的父进程都是bash,这是因为Linux系统是用fork()复制出子进程,然后在子进程中调用替换函数进行进程替换,实现相关命令。 (1) exec 系列替换过程:pcb 使用以前的只…...
日志文件之间关系和介绍及应用
1.常用日志框架代码举例 Log4j: Log4j是Java中广泛使用的日志框架之一。它提供了灵活的配置选项和丰富的功能,支持日志级别、日志输出目标等。Log4j有1.x版本和2.x版本,其中Log4j 2.x是对1.x的升级和扩展。 Logback: Logback是由Log4j创始人设计的Log4…...
mac电脑屏幕录制Berrycast Mac屏幕录制软件
Berrycast是一款为Mac设计的优秀屏幕录制软件,它让屏幕录制变得简单而高效。以下是Berrycast的一些主要特点: 简单的用户界面:Berrycast拥有直观和简洁的用户界面,使得用户可以轻松上手。高质量的视频输出:Berrycast能…...
机器学习笔记之最优化理论与方法(一)最优化问题概述
机器学习笔记之最优化理论与方法——最优化问题概述 引言什么是最优化问题最优化问题的基本形式最优化问题的分类各分类最优化问题的数学表达约束优化VS无约束优化线性规划VS非线性规划连续优化VS离散优化单目标优化VS多目标优化 引言 从本节开始,将对最优化理论与…...
【ES5新特性一】 严格模式语法变化、全局的JSON对象、编码和解码的方法
前言 ECMAScript 和 JavaScript 的关系 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准…...
Java【手撕滑动窗口】LeetCode 3. “无重复字符的最长子串“, 图文详解思路分析 + 代码
文章目录 前言一、长度最小子数组1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链…...
学习哈哈哈哈
# 零、学习计划 * 数据库相关 * 索引 * [我以为我对数据库索引很了解,直到我遇到了阿里面试官 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/107487215) * [给我一分钟,让你彻底明白MySQL聚簇索引和非聚簇索引 - 知乎 (zhihu.com)](ht…...
3D打印螺纹设计革新:CustomThreads项目突破传统加工限制
3D打印螺纹设计革新:CustomThreads项目突破传统加工限制 【免费下载链接】CustomThreads Fusion 360 Thread Profiles for 3D-Printed Threads 项目地址: https://gitcode.com/gh_mirrors/cu/CustomThreads 你是否曾遇到3D打印螺纹时的挫败感?精心…...
OpenClaw私有化部署指南:Qwen3-VL:30B+飞书智能助手
OpenClaw私有化部署指南:Qwen3-VL:30B飞书智能助手 1. 为什么选择本地化部署? 去年我接手了一个需要处理大量敏感数据的项目,团队最初尝试使用公有云API,但很快遇到了数据合规问题。这促使我开始研究本地化AI解决方案࿰…...
告别重复造轮子:用快马平台高效生成ibbot机器人的通用功能模块
作为一名经常需要开发聊天机器人的开发者,我最近在做一个餐厅订座助手的项目时,发现了一个能大幅提升效率的好方法。今天就来分享一下如何利用InsCode(快马)平台快速生成ibbot的核心功能模块,避免重复造轮子的痛苦经历。 用户意图识别模块的…...
STM8/STM32 GPIO触摸按键实现与优化
基于STM8/STM32的GPIO触摸按键实现技术解析1. 触摸按键技术概述1.1 传统方案与MCU实现对比在消费类电子产品中,触摸按键的实现通常有两种主流方案:专用触摸IC方案:集成度高但成本较高MCU GPIO方案:利用通用微控制器实现࿰…...
springboot-vue基于web的智能家居控制应用的设计与实现
目录技术栈选择系统架构设计核心功能实现开发与测试计划关键代码示例(后端)前端交互示例部署方案项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选择 后端采用Spring Boot框架,提供RE…...
给嵌入式新手的ST7789驱动避坑指南:从SPI模式到RGB565显示的完整配置流程
给嵌入式新手的ST7789驱动避坑指南:从SPI模式到RGB565显示的完整配置流程 第一次接触ST7789液晶驱动芯片时,面对厚厚的数据手册和复杂的时序图,很多嵌入式新手都会感到无从下手。本文将带你一步步拆解ST7789的驱动过程,从SPI模式配…...
百川2-13B-4bits开源模型GPU算力适配:验证在RTX 4090D上支持max_new_tokens=2048
百川2-13B-4bits开源模型GPU算力适配:验证在RTX 4090D上支持max_new_tokens2048 1. 引言:当大模型遇上消费级显卡 如果你手头有一块RTX 4090D显卡,可能会好奇:它能流畅运行多大的语言模型?能生成多长的文本ÿ…...
Determined资源管理深度解析:如何节省50%云GPU成本
Determined资源管理深度解析:如何节省50%云GPU成本 【免费下载链接】determined Determined is an open-source machine learning platform that simplifies distributed training, hyperparameter tuning, experiment tracking, and resource management. Works wi…...
通义千问3-4B降本增效:单卡实现2560维向量生成案例
通义千问3-4B降本增效:单卡实现2560维向量生成案例 1. 引言:当向量生成不再需要“大力出奇迹” 如果你正在搭建一个智能知识库,或者想为自己的应用增加语义搜索能力,那你一定遇到过这个难题:如何高效、低成本地生成高…...
揭秘抖音批量采集神器:从技术内核到实战突破
揭秘抖音批量采集神器:从技术内核到实战突破 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容创作与研究的浪潮中,抖音作为全球最大的短视频平台,其丰富的内容资…...
