LeetCode删除排序数组中的重复项(Java实现)

原题:

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例 1:
给定数组 nums = [1,1,2], 
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。

解题思路:

1、数据是有序的,说明相同的元素总在一起
2、不要使用额外的数组空间,这个就限制了使用treeSet的方法

所以这个题可以理解为:在一个有序数组中找到所有不同的元素的个数

答案:

使用双指针,剔除相同的元素

class Solution {public int removeDuplicates(int[] nums) {if(nums == null || nums.length == 0){return 0;}int a = 0;for(int b=1;b<nums.length;b++){if(nums[a] != nums[b]){a++;nums[a]=nums[b];}}return a+1;}
}

网友的视频动画讲解:

https://mp.weixin.qq.com/s/JcsBahMXtwX2I7QkO6OTJA

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

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

相关文章

关于高考报志愿的一些规划建议

目录前言1、报志愿&#xff0c;选大学中国大学的档次报志愿的整体思路不同分数线的报志愿建议超出一本分数线100分以上超过一本分数线50分左右到100分刚刚超过一本分数线不到50分二本分数线超很多&#xff0c;但刚好没上一本分数线刚上二本分数线的三本分数线专科分数线选择大学…

RabbitMQ和Kafka选型用哪个

作为一个有丰富经验的微服务系统架构师&#xff0c;经常有人问我&#xff0c;“应该选择RabbitMQ还是Kafka&#xff1f;” 基于某些原因&#xff0c; 许多开发者会把这两种技术当做等价的来看待。的确&#xff0c;在一些案例场景下选择RabbitMQ还是Kafka没什么差别&#xff0c…

spring boot controller 增加指定前缀的两种方法

1、增加配置 server.servlet.context-path: /api 这种是最常见的&#xff0c;加上这个配置后&#xff0c;所有的url&#xff0c;必须带上/api的前缀&#xff0c;才能访问到该url 2、过滤拦截 这种是加上/api也可以访问&#xff0c;不加/api也可以访问&#xff0c;适合项目重…

【FPGA】分享一些FPGA视频图像处理相关的书籍

在做FPGA工程师的这些年&#xff0c;买过好多书&#xff0c;也看过好多书&#xff0c;分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

错误记录:Current request is not a multipart request

springboot 报错&#xff1a;Current request is not a multipart request 这个一般是controller是带有上传文件的服务&#xff0c;类似RequestParam MultipartFile[] file 解决&#xff1a; 首先检查请求头中的Content-Type是否设置对&#xff0c;如果把Content-Type设置成a…

java 使用gzip压缩和解压 传输文件必备

java gzip 压缩解压工具类&#xff0c;开箱即用 gzip原理看我另外一篇介绍 压缩效果直接看图&#xff1a; package com.yeahmobi.datacheck.util;import java.io.*; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream;public class CompressUtil…

spring boot maven项目返回值乱码的解决方法

spring boot maven项目返回值乱码的解决方法 1、先看乱码效果&#xff1a; spring boot maven项目&#xff0c;返回值乱码&#xff0c;如下图&#xff1a; 控制台打印log乱码&#xff0c;如下图&#xff1a; 有swagger的话&#xff0c;swagger文档乱码&#xff0c;如下图&…

云服务和serverless

云服务中的一些基础概念 IaaS&#xff08;Infrastructure as a server&#xff09;基础设施即服务 基础设施就是物理服务器 云服务厂商把物理服务器搭好&#xff0c;直接卖云端服务器或者虚拟机 用户可以自己装系统&#xff0c;然后装软件等等 PaaS&#xff08;Platform as …

【错误记录】Invalid character found in method name. HTTP method names must be tokens

错误日志 [2020-08-14 10:47:11.262] [http-nio-8093-exec-7] [INFO] [o.a.c.h.Http11Processor] [Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.] java.lang.IllegalArgumentException: Invali…

redis 常见基础面试题

1、在项目中缓存是如何使用的&#xff1f;为什么要用缓存&#xff1f;缓存使用不当会造成什么后果&#xff1f; 面试官心理分析 这个问题&#xff0c;互联网公司必问&#xff0c;要是一个人连缓存都不太清楚&#xff0c;那确实比较尴尬。 只要问到缓存&#xff0c;上来第一个…

api接口设计

api接口设计 健壮性 对外提供的接口&#xff0c;最好支持幂等性&#xff0c;即相同的请求重复调用&#xff0c;服务端的操作应该只有一次&#xff0c;并且每次返回的结果应该是一样的。 一般的做法是要求客户端在每次调用的时候带上唯一键&#xff0c;服务端第一次正常处理&a…

【转载】广告系统架构解密

广告、增值服务、佣金&#xff0c;是互联网企业最常见的三种盈利手段。在这3大经典中&#xff0c;又以广告所占的市场份额最大&#xff0c;几乎是绝大部分互联网平台最主要的营收途径&#xff0c;业务的重要性不言而喻。 从技术角度来说&#xff0c;广告业务涉及到 AI算法、大数…

【读书笔记】--- 《码出高效:java开发手册》

这几天读了几本书&#xff0c;突然觉得可以写点什么&#xff0c;因为我也看了不少书了&#xff0c;于是就有了个想法&#xff0c;我可以在我看过的每本书后&#xff0c;把我的一些想法记录下来&#xff0c;一方面可以供以后回忆&#xff0c;一方面可以让读者看到后&#xff0c;…

quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist

问题&#xff1a; spring-boot 整合quartz的时候&#xff0c;连接windows的mysql的时候好好的&#xff0c;然而用linux上的mysql的时候&#xff0c;启动就报了这个错&#xff1a; Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS’ doesn’t exist 分析&#xff1a…

quartz 本地有效,线上失效的问题

问题&#xff1a; 最近开了一个新项目&#xff0c;spring boot 整合了quartz&#xff0c;出现了一个问题&#xff0c;就是当项目连接到本地电脑的数据库时&#xff0c;一切正常。但是当项目连接远程linux上的数据库的时候&#xff0c;发现定时任务不灵了&#xff0c;也不是不执…

关于SimpleDateFormat线程不安全的源码分析

SimpleDateFormat&#xff0c;线程不安全&#xff0c;源码分析 1、先看SimpleDateFormat类图 SimpleDateFormat继承了DateFormat DateFormat中有个成员变量是Calendar&#xff0c;这个先记住&#xff0c;线程不安全主要就是因为这个成员变量 2、看下图SimpleDateFormat的p…

mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix

mysql 报错 Specified key was too long; max key length is 767 bytes 当mysql数据库的字符集使用了utf8mb4&#xff0c;就很容易在执行建表sql的时候报这个错误。 原因&#xff1a; mysql有个系统变量innodb_large_prefix&#xff0c; 如果开启了&#xff0c;索引键前缀限…

mysql8.0 线上线下数据库版本不一致导致的问题

问题&#xff1a; 线上注册失败&#xff0c;线下测试环境没问题 update t_authentication_code set invalid 0,update_time sysdate() where email ‘XXX’ and code ‘XXX’ and invalid 1; 同样的sql&#xff0c;线下执行成功&#xff0c;线上却一直没有修改成功 分析…

vue 每次弹框都初始化

之前弹框都是下图这种&#xff1a; 通过detailOpen变量控制是否显示弹框 但这种最近在整合tinymce富文本编辑器的时候&#xff0c;发现第二次弹框数据没有回填 原因是因为第一次弹框关闭后&#xff0c;没有初始化&#xff0c;从而影响了后面的弹框功能。 修改成下图就好了&…

微信小程序支付流程(新手教程)

微信小程序支付流程&#xff1a; 一、前期申请准备工作 1、小程序注册&#xff0c;要以公司的以身份去注册一个小程序&#xff0c;才能开通微信支付权限&#xff1b; 个人申请的小程序是不具备“微信支付”功能的&#xff01; 但个人小程序可以生成微信支付的那个收款二维码&…