【力扣每日一题02】数组篇--删除有序数组中的重复项

一、题目

给你一个 升序排列 的数组 nums

请你原地删除重复出现的元素,使每个元素 只出现一次

返回删除后数组的新长度。

元素的 相对顺序 应该保持 一致

然后返回 nums 中唯一元素的个数。

二、思路解析

这道题要用到 "双指针" 的概念,这也是我第一次接触。

很不幸,这道题我又不会做,也是看了答案之后,才悟出来的。

下面是我看完答案后,自己的思考过程:

想要数组元素不重复出现,那就可以用两个指针来遍历数组。

一个快指针,遍历得快,能够更快发现重复的元素;

另一个慢指针用来接受那些不重复的元素。

最后返回慢指针即可。

还有一点要注意的,就是要使用 If 语句进行分类讨论,比如 nums.length == 0 的情况,数组没有元素,这时候则应该返回 0 。

三、完整代码

复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length==0){
            return 0;
        }

        int fast = 1;
        int slow = 1;

        while(fast<nums.length){
            if(nums[fast-1]!=nums[fast]){
                nums[slow]=nums[fast];
                slow++;
            }
            fast++;
        }
        return slow;
    }

}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

相关推荐
Python私教9 分钟前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
2601_9638702032 分钟前
【计算机毕业设计】基于Spring Boot的专科医院医疗管理系统
java·spring boot·课程设计
Bingo_BIG37 分钟前
Java Spring 批量修改,实体、接口、方法的定义
java·spring
.道阻且长.1 小时前
9.LeetCode算法习题讲解--滑动窗口--无重复字符的最长字串
算法·leetcode·职场和发展·哈希算法
画中有画1 小时前
软件架构中质量属性(性能、安全、可扩展性)的权衡设计
java·运维·安全
Shaoxi Zhang1 小时前
JAVA学习笔记035——对象和JSON格式
java·笔记·学习
赵丙双1 小时前
CountDownLatch 源码分析
java·aqs·countdownlatch
余额瞒着我当琳2 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
thefool1122662 小时前
翻转二叉树
java
ltl2 小时前
HNSW:图索引如何击败树索引
算法