【力扣每日一题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;
    }

}

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

相关推荐
小则又沐风a2 分钟前
list模拟实现
java·服务器·list
上弦月-编程5 分钟前
C语言链表详解,新手也能看懂! ——从入门到精通的完整教程
java·c语言·c++
szial6 分钟前
uv 实战指南:用一个工具重塑 Python 开发工作流
开发语言·python·uv
生成论实验室14 分钟前
《事件关系阴阳博弈动力学:识势应势之道》第十篇:识势应势——从认知到行动的完整闭环
人工智能·算法·架构·创业创新·安全架构
Aision_15 分钟前
为什么 CTI 场景需要知识图谱?
人工智能·python·安全·web安全·langchain·prompt·知识图谱
risc12345616 分钟前
SegmentTermsEnum#postings 和 IntersectTermsEnum#postings
算法·lucene
BU摆烂会噶17 分钟前
【LangGraph】LangGraph 工具中访问运行时上下文——ToolRuntime
人工智能·python·langchain·人机交互
ffqws_18 分钟前
Spring Boot 配置读取全解析:从 application.yml 到 Java 对象的完整链路
java·数据库·spring boot
clear sky .19 分钟前
【TCP】TCP数据粘包/分包问题
java·服务器·网络
阿Y加油吧19 分钟前
二刷 LeetCode:两道经典贪心题复盘
算法·leetcode·职场和发展