(LeetCode 面试经典 150 题) 80. 删除有序数组中的重复项 II (双指针、栈)

题目:80. 删除有序数组中的重复项 II



思路:左指针 left 类似于指向栈顶的下一个待填的元素,每次遍历只需看当前元素numsi和栈顶的下一个元素numsleft-2是否相等,不等就可以插入栈当中。时间复杂度0(n)。

C++版本:

cpp 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int left=2;
        for(int i=2;i<nums.size();i++){
            if(nums[left-2]!=nums[i]){
                nums[left]=nums[i];
                left++;
            }
        }
        if(left>nums.size()) return nums.size();
        return left;
    }
};

JAVA版本:

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int left=2;
        for(int i=2;i<nums.length;i++){
            if(nums[left-2]!=nums[i]){
                nums[left]=nums[i];
                left++;
            }
        }
        if(left>nums.length) return nums.length;
        return left;
    }
}

Go版本:

go 复制代码
func removeDuplicates(nums []int) int {
    left:=2
    for i:=2;i<len(nums);i++ {
        if nums[left-2]!=nums[i] {
            nums[left]=nums[i]
            left++
        }
    }
    if left>len(nums) {
        return len(nums)
    }
    return left
}
相关推荐
金銀銅鐵5 小时前
带您看懂字节码指令(三):一行加法里有什么
java·jvm
文丑颜不良啊5 小时前
LeetCode2921~2940题目解析
java·leetcode
我不会起名字3225 小时前
未接入最终读上限的参数:`websocketMaxMsgLen` 与 12.5 倍差距
后端·websocket·go·即时通讯·im·故障排查
Pniubi5 小时前
动态规划入门 ( - 力扣509斐波那契数)
算法·动态规划
北漂人Java6 小时前
基于 Spring AI Alibaba WorkFlow 构建 Java 生产级 AI Agent
java·人工智能·spring
吴长建先生重名了6 小时前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
用户112936112196 小时前
编译全绿,上线就崩:MyBatis 五层方法名大小写埋下的坑
java
贝壳6907 小时前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
王中阳Go7 小时前
100 件货卖出 116 件,库存停在 -16
后端·mysql·go
文丑颜不良啊7 小时前
LeetCode2901~2920题目解析
java·leetcode