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

}

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

相关推荐
BING_Algorithm2 分钟前
JDBC核心教程
java·后端·mysql
京师20万禁军教头2 分钟前
33面向对象(中级)-object类详解
java
一个小浪吴啊3 分钟前
重构 AI 编程流:基于 Hermes 记忆中枢与 OpenCode 执行终端的 Harness 工程化实践
java·人工智能·opencode·harness·hermes
Lyyaoo.8 分钟前
【JAVA网络面经】应用层协议
java·开发语言·网络
大大杰哥9 分钟前
leetcode hot100(1) 哈希
leetcode
kongba00710 分钟前
vibe coding的测试架构设计提示词V1.0
python
無限進步D13 分钟前
Java 面向对象高级 继承
java·开发语言
爱写代码的倒霉蛋14 分钟前
2021天梯赛L2-4真题解析
数据结构·算法
hoiii18715 分钟前
基于CVX的储能调峰调频优化模型
算法
云烟成雨TD15 分钟前
Spring AI Alibaba 1.x 系列【37】ReactAgent 构建、执行流程分析
java·人工智能·spring