当前位置: 首页 > news >正文

leetcode第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。不需要考虑数组中超出新长度后面的元素。

整体思路: 这是一个有序的数组,出现重复的数子只会在一起。因为我们找到一个重复数字之后就需要立即删除,导致数组后边的元素会一直发生元素的序号变化,所以我们采用从后往前的方法。使用两个指针,一个指针s,一个指针j,如下图:
在这里插入图片描述
设置一个计数器,1.当重复元素超过2时,就将当前元素后面的所有元素向前移一位。移完之后因为之前s指针指向的还是之前的位置,因此要减一。只有发生移位时,数组的长度才会发生变化。2.当两个元素不相同时,就将s指针指向j,并且将计数器重置为1。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;class Solution {
public://将数组当前的这个删除并且移动元素void move(vector<int>& nums,int pre){for(int i=pre ; i<nums.size()-1 ; i++){nums[i]=nums[i+1];}}int removeDuplicates(vector<int>& nums) {int count=nums.size();//记录nums的元素个数int s=nums.size()-1;	//指针swhile (s>1)		//只剩最后一个元素时不用再检查了{   int renum=1;//计数器,自己就是一个,所以设置为1for(int j=s-1;j>=0;j--){if(nums[s]==nums[j]){renum++;//每次删除操作时,数组的长度就减 1if(renum>2){move(nums,j);s--;count--;}}else{s=j;renum=1;}}}return count;}};
int main(){vector<int> nums={1,1,1,2,2,3};Solution s;cout<<s.removeDuplicates(nums);
}

在这里插入图片描述

相关文章:

leetcode第80题:删除有序数组中的重复项 II

题目描述 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 …...

【Docker】Docker-Compose内置DNS负载均衡失效问题

Docker Compose实现负载均衡 还是对前面的例子docker-compose.yml稍微修改&#xff1a; version: "3.8"services:flask-demo:build:context: .dockerfile: Dockerfileimage: flask-demo:latestenvironment:- REDIS_HOSTredis-server- REDIS_PASS${REDIS_PASS}healt…...

[Python]Selenium-自动化测试

Selenium是一个web自动化测试的工具,在使用之前先在对应的项目添加工具包噢. 本文章主要简单的介绍了selenium对于自动化测试的使用 目录 添加浏览器驱动 get函数来到对应网站 驱动的定位 元素定位 id定位 class name定位 CSS定位 XPath定位 link text定位 定位一…...

高效管理文件夹名称:如何批量修改指定多样化的文件夹名称

在文件管理工作中&#xff0c;文件夹名称的管理对于整体的文件管理体系有着至关重要的作用。然而&#xff0c;往往我们会在文件夹名称的管理上遇到一些难题&#xff0c;如&#xff1a;需要修改的文件夹名称多样化&#xff0c;无法一次性满足所有需求。为了解决这个问题&#xf…...

c 读取音频协议WAV文件头(再生成wav文件)

查找wav文件头关键struct 位置&#xff0c;当然也可查找avi文件头。用这个方法找到avi文件data位置后&#xff0c;可直接读出文件的每一帧图片。当然avi数据的标志位不是data,可以是00dc等。 WAV音频头文件有三个关键struct&#xff1a;RIFF, fmt,data。 AVI 视频文件头的关键…...

Prompt设计与大语言模型微调

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”&#xff0c;“智能体” 简单概括成以下几个步骤&#xff1a; 预处理文本&#xff1a;ChatGPT的输入文本需要进行预处理。输入编码&#xff1a;ChatGPT将经过预处理…...

修复VS2015没有代码提示的问题【已解决】

问题描述 在Visual Studio 中编写代码时&#xff0c;发现使用库函数的时候&#xff0c;在类对象后输入点后&#xff0c;并没有出现类对应的成员信息的提示。 解决过程 1&#xff09;方法1&#xff1a; 百度“vs 没有代码提示”&#xff0c;搜索解决方案。 方案1&#xff1…...

DeepSpeed: 大模型训练框架 | 京东云技术团队

背景&#xff1a; 目前&#xff0c;大模型的发展已经非常火热&#xff0c;关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大&#xff0c;动辄上百亿&#xff0c;如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这…...

暄桐推荐|学书法的必读书目

在暄桐教室&#xff0c;写字之外&#xff0c;读书、静坐也是桐学们修习的功课。今天&#xff0c;便向你推荐&#xff0c;关于学习书法&#xff0c;暄桐教室的那些必读书目&#xff1a;    暄桐推荐学书法必读书之初阶书目&#xff1a;      对零基础的小白同学或刚入门…...

2023年赋能更多的人

最近接触到一些新人&#xff0c;是真正的网络新人&#xff0c;慢慢理解了新人的困惑。 对于新人&#xff0c;每天获取的信息五花八门&#xff0c;这是好的也是极其不好的。因为他们不知道如何筛选&#xff0c;到底适不适合自己去做。 我一直在劝大家去做一些内容创造性的事情…...

量子计算与量子密码(入门级)

量子计算与量子密码 写在最前面一些可能带来的有趣的知识和潜在的收获 1、Introduction导言四个特性不确定性&#xff08;自由意志论&#xff09;Indeterminism不确定性Uncertainty叠加原理(线性)superposition (linearity)纠缠entanglement 虚数的常见基本运算欧拉公式&#x…...

将安全作为首要目标 — Venus 的现状和前景展望

DeFi 的全面爆发将上一轮牛市推向巅峰。在不断的演化中&#xff0c;DeFi 领域也产生了很多新兴的细分领域&#xff0c;比如收益聚合器、合成资产、各种 DeFi 收益工具&#xff0c;以及最近整个市场都在讨论的 RWA 等。 DeFi 在不断进化&#xff0c;不变的是&#xff0c;DEX 和借…...

『第七章』翩翩起舞的雨燕:顺序与并发执行

在本篇博文中,您将学到如下内容: 1. 顺序执行2. 主线程 Main Thread 的秘密3. 并发执行:GCD 与分发队列(DispatchQueue)4. 延时执行5. 数据竞争(Data Race)6. 线程间的同步7. 避免线程爆炸8. RunLoop 与定时器总结楚客自相送,沾裳春水边。 晚来风信好,并发上江船。 花映…...

c语言进制的转换10进制转换16进制

c语言进制的转换10进制转换16进制 c语言的进制的转换 c语言进制的转换10进制转换16进制一、16进制的介绍二、10进制转换16进制的方法 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&#xff0c;B代…...

js中的Formdata数据结构

这里写目录标题 一、基本概念二、常用方法1.append(name, value)、set(name, value)2.get()、getAll()3.has(name)4.delete(name)5.keys(),values(),entries() 三、其他细节1.for of遍历2.转为对象3.结合 URLSearchParams 转为queryString 一、基本概念 FormData 提供了一种表…...

Spring MVC 执行流程

前言 Spring MVC 是一个非常强大的框架&#xff0c;它能够帮助开发人员快速构建高效的 Web 应用程序。然而&#xff0c;要理解 Spring MVC 的执行流程并不容易&#xff0c;因为它涉及到多个组件和模块。在本文中&#xff0c;我们将介绍 Spring MVC 的执行流程&#xff0c;帮助…...

JAVA毕业设计104—基于Java+Springboot+Vue的医院预约挂号小程序(源码+数据库)

基于JavaSpringbootVue的医院预约挂号小程序(源码数据库)104 一、系统介绍 本系统前后端分离带小程序 小程序&#xff08;用户端&#xff09;&#xff0c;后台管理系统&#xff08;管理员&#xff0c;医生&#xff09; 小程序&#xff1a; 预约挂号&#xff0c;就诊充值&…...

一文了解独立站黑科技:clock斗篷技术

FP产品作为高利润高回报的产品&#xff0c;它热度在出海商品中是一直居高不下的。但这类产品在独立站的运营中往往会遇到很多问题&#xff0c;例如最让商家头疼的投流问题&#xff0c;FP产品的推广营销很容易遭到平台的管控封禁&#xff0c;这时候往往会用到市面上现在很火的黑…...

Java IDEA controller导出CSV,excel

Java IDEA controller导出CSV&#xff0c;excel 导出excel/csv&#xff0c;亲测可共用一个方法&#xff0c;代码逻辑里判断设置不同的表头及contentType&#xff1b;导出excel导出csv 优化&#xff1a;有数据时才可以导出参考 导出excel/csv&#xff0c;亲测可共用一个方法&…...

FFmpeg编译安装(windows环境)以及在vs2022中调用

文章目录 下载源码环境准备下载msys换源下载依赖源码位置 开始编译编译x264编译ffmpeg 在VS2022写cpp调用ffmpeg 下载源码 直接在官网下载压缩包 这个应该是目前&#xff08;2023/10/24&#xff09;最新的一个版本。下载之后是这个样子&#xff1a; 我打算添加外部依赖x264&a…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...

虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)

当我们网关配置好了&#xff0c;DNS也配置好了&#xff0c;最后在虚拟机里还是无法访问百度的网址。 第一种情况&#xff1a; 我们先考虑一下&#xff0c;网关的IP是否和虚拟机编辑器里的IP一样不&#xff0c;如果不一样需要更改一下&#xff0c;因为我们访问百度需要从物理机…...

实现p2p的webrtc-srs版本

1. 基本知识 1.1 webrtc 一、WebRTC的本质&#xff1a;实时通信的“网络协议栈”类比 将WebRTC类比为Linux网络协议栈极具洞察力&#xff0c;二者在架构设计和功能定位上高度相似&#xff1a; 分层协议栈架构 Linux网络协议栈&#xff1a;从底层物理层到应用层&#xff08;如…...