算法:1. 删除排序数组中的重复项

Java数组排序并删除重复项 JAVA代码实现:用冒泡法将数组进行排序显示,并将删除重复项之后的新数组进行输出 立即下载

1. 题目描述

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

2. 示例

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

3. 思路与代码实现

3.1 思路一:快慢指针法

首先我们让慢指针等于0,第0个索引是第一个元素一定不会重复,我们通过设置一个慢指针指向不会重复的索引号,再通过一个快指针(进行遍历)与慢指针进行比较,如果值不相等,说明这个元素也是我们要找的不重复的值,这时候我们把慢指针索引加一,然后将慢索引位置处的元素与快索引处的值进行交换。

如图:
在这里插入图片描述

代码实现:

class Solution {
    public int removeDuplicates(int[] nums) {
        int a=0;//记录慢指针的索引
        for(int i=1;i<nums.length;i++){
            if(nums[a]!=nums[i]){
                a++;
                nums[a]=nums[i];
            }
        }
        return a+1;//因为我们记录的是索引,而要求是返回数组的长度,所以加一
    }
}

3.2 思路二:双指针法

这钟方法可以提高我们的速度,因为我们通过多一个指针减少了比较的次数。具体做法是,因为我们第一个元素一定是可以记录下来在不重复的这个数组中的,因此我们首先让A指针等于0,然后让A指针来记录可以记录在不重复数组中的末尾索引,让B指针初始值为1,和B指针下面的一个指针进行比较如果不相同,就让A指针加一并把A指针位置处的值与B指针下面的一个指针的值进行互换,这样保证了A指针指向的值永远是不重复的值。

如图:
在这里插入图片描述
代码实现:

class Solution {
    public int removeDuplicates(int[] nums) {
        int a=0;//记录不重复值末尾的索引号
        for(int i=0;i<nums.length-1;i++){
            if(nums[i]!=nums[i+1]){
            a++;
            nums[a]=nums[i+1];
            }
        }
        return a+1;//因为我们记录的是索引,而要求是返回数组的长度,所以加一
    }
}

java实现去除数组中重复元素,并排序 先声明一个数组,这个数组中可能会存在重复的元素,而且顺序也是杂乱的,要求将这个数组中的重复元素排除掉并将新得到的数组进行递增排序 立即下载

相关推荐

数模【Mathematica(安装、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例)】

Mathematica(安装and激活、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例) Mathematica_11.3.0 安装教程 Mathematica11.3 激活 P1 笔记本 P2 入门方法 P3 基本计算 P4 基本图形 P5 创建互动模型 P6 利用数据 P7 演示 P8 完整实例

upward 12万+

数组解释nums[i++] = nums[j++]

nums[i++] = nums[j++]//先赋值再i=i+1,j=j+1。nums[++i] = nums[++j]//先i=i+1,j=j+1再赋值。nums[i++]=1与nums[++i]=1的区别。nums[++i]=1//先i=i+1,再赋值。nums[i++]=1//先赋值再i=i+1。

00年女程序员分享自己的学习笔记 2093

华为CNA VRM搭建(使用vmware worfstartion搭建)

华为CNA和VRM在 vmware workstation安装使用

weixin_70595351的博客 1813

LeetCode刷题笔记(4Sum)

这道题本来昨天就做完了,但由于昨天要主持支部组织生活会,所以才拖到了今天,下面来分享一下经验吧! Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d = target? Find all unique ...

Vensmallzeng的博客 332

DDR3性能优化实战:如何用Xilinx MIG控制器实现800MHz稳定读写(7系列FPGA版)

本文深入探讨了在Xilinx 7系列FPGA上使用MIG控制器实现DDR3存储器800MHz稳定高速读写的实战优化技巧。文章聚焦于高级时序调优、Bank Machine调度策略、用户接口设计优化以及利用ILA进行信号完整性调试,旨在帮助工程师突破性能瓶颈,实现接近理论峰值的稳定带宽,并为进一步冲刺更高频率提供进阶调参指南。

seed的博客 778

三维模型转变为点云模型的好工具——CloudCompare使用小记

普通三维模型能够直观地展示物体的三维全貌,但是在一些场合需要将三维模型变为相应的点云模型进行展示,而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况,或是使用PCL库中的可执行文件进行转换,这两种操作较为麻烦。笔者最近就遇到了这样一个情况,找到了一个名叫CloudCompare(CC)的软件,能够支持将多种文件格式的三维模型转变为点云模型。以下将本人在使用过程中所使用到的一些操作简记下来供朋友们和将来的自己参考。 一、下载 CloudCompare是一款免费软件,其可以在CloudComp

hdlwyt的博客 2万+

nums[i] = nums[i]++; // 对于自增优先级的探索

问题的源头是在遍历输出的时候不小心给自增操作前加了个赋值,然后发现打印出来的数据和源数据一样,并且数组中的数据也没有改变,查不到到底怎么解决,后来在浏览别人帖子的时候,突然灵光一闪,想起了运算符优先级,一解释,果然通了。 nums[i] = nums[i]++; 实际上首先是赋值号右侧的自增符号先运算,即 nums[i] = nums[i]+1;//此时nums[i]的元素值自增了1 但是我们都知道i++这个操作虽然是自增,但是留在运算里的值依旧时原值,于是换算到这里就成了 nums[i] = nums[i

super_ssboy的博客 2080

单细胞分析R包monocle3服务器安装教程

由于centos7系统yum只能安装到低版本gdal,而monocle3依赖包需要 gdal>2 版本,从gdal官网下载2.4.4版本编译安装。monocle3的安装是通过cole-trapnell-lab安装的,该包挂在github上,需要通过github先安装leidenbase包,需要提前安装devtools包下载工具。接着利用BiocManager安装相应的依赖包,由于这些包的特殊性,所以不要切换到国内Bio_Mirror镜像,否则会找不到,如果一次不成功,缺啥补啥即可。运行 ldconfig。

qq_36608036的博客 1万+

力扣26-删除排序数组中的重复项【双指针】

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 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 .

城溪羡鱼的博客 448

openclaw通俗入门系列9——流式传输 + 分块

流式传输 = 不等写完就开始发。分块流式传输是把长回复切成几条消息发(所有渠道),草稿流式传输是像打字一样实时显示(仅 Telegram)。可以配置块大小、发送时机、合并规则、类人延迟。

m0_60605453的博客 507

11、AUTOSAR配置全解析:从运行实体到通信接口

本博客详细解析了在Simulink中使用AUTOSAR字典配置AUTOSAR运行实体(Runnables)、运行实体间变量(IRVs)、参数以及多种通信接口的过程。内容涵盖运行实体及其事件的配置、IRV和参数的属性设置,以及发送-接收接口、模式切换接口、客户端-服务器接口、非易失性数据接口、参数接口和触发接口的详细配置方法。通过这些步骤,开发者可以高效地构建符合AUTOSAR标准的汽车电子软件系统。

e3f4g5的博客 123

题目:删除排序数组中的重复项[leetcode初级算法——数组——1]

题目:删除排序数组中的重复项[leetcode初级算法——数组——1] ·给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 ·示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 ·示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4];函数应该返回新的长

weixin_44201830的博客 277

图解电动汽车:电动汽车主要参数

动力性指标 汽车的动力性指标主要有最高车速、加速时间、最大爬坡等,体现了汽车在行驶过程中能达到的极限运动水平。对于电动汽车,其动力性由搭载的驱动电动机决定,主要的参数包括最大扭矩、额定功率、最大功率、最大转速等。 功率是指物体在单位时间内所做的功的多少,是描述做功快慢的物理量,单位是 kW。 扭矩是指机械元件转动的力矩,也称转矩,表示转动力量的大小,单位是 N·m。 转速是指发动机/电动机的转速,的单位是 rpm,即转每分钟。额定转速是指在额定功率下电动机的转速,最大转速则是在最大功率下电动机的转速。

程序员「阿基米东」的编程之旅 2万+

Leetcode 初级算法:数组1.从排序数组中删除重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums ...

weixin_45221477的博客 204

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leedcode(初级算法1):从排序数组中原地删除重复项

初级算法day1 从排序数组中原地删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度...

vv冲鸭! 480

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

leecode初级算法:(1)删除排序数组中的重复项

题目描述:         给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要 使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件 下完成。     解决思路:   我这里有两种方法,一种是官方的正宗的双指针法,另一种是临时变量法。 (1)双指针法:        使用两个指针从相同方向访问提供的排序数...

korte的博客 248

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode算法(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。 你不需要考虑数组中超出...

YShuaiLong的博客 267

Leetcode初级算法教程Day1:删除排序数组中的重复项

写在前面:题目来源为LeetCode官网,不做任何盈利目的,旨在和大家一起学习进步。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/ 一、题目描述 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。【不要使用额外的数组空间,你必须在原地修改输入数组,即用 O(1) 额外空间的条件下完成。】 示例 1: 输入:nu

DannyChan1的博客 367

leetcode-java 删除排序数组的重复项

删除排序数组的重复项 删除排序数组的重复项 I 题目描述: leetcode 26. 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个...

baobaohui 370

Python算法题解:删除排序数组的重复项

Leetcode第26题:删除排序数组的重复项 原题:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不能使用额外的数组空间,必须是原地修改输入的数组并使用O(1)额外空间条件下完成。 示例1 # 给定数组 nums = [1,1,2] # 函数应该返回新的长度 2, 并且原数组nums的前两个元素被修改成 1,2 # 你不需要考虑数组中超出新长度后面的元素 这里题目中说的“原地删除”重复出现的元素,并不是说真的删除它。“你不需要考虑数组中超出新长度后面

weixin_45682758的博客 652

剑指leetcode—删除排序数组中的重复项||

题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,0,1,1,1,1,2,3,3], 函数应返回新长度 .

super_优快云er的博客 273

angularjs 元素重复指定次数_LeetCode 题解 | 80. 删除排序数组中的重复项 II

力扣 80. 删除排序数组中的重复项 II(点击查看题目)力扣​leetcode-cn.com题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, ...

weixin_39662578的博客 67

LeetCode009: python删除排序数组中的重复项

原题地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [...

zx147852的专栏 161

leetcode-26.删除重复数组中的重复项

leetcode-26.删除重复数组中的重复项 题意 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改...

92

【边学边敲边记】LeetCode009:删除排序数组中的重复项

一、写在前面LeetCode 第八题 有效的括号 传输门:今天给大家分享的是LeetCode 数组与字符串 第九题:删除排序数组中的重复项,为面试而生,期待你的加入。二、...

简说Python的博客 393
上一篇: 第二节 Java编程基础
下一篇: 第三节 Java 面向对象
_乐颜
博客等级 码龄7年 15粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值