leetcode_80删除有序数组中的重复项 II

1. 题意

删除有序数组中的重复元素,同一元素不能超过两次。

2. 题解

leetcode26. 删除有序数组中的重复项的升级版本,只需要考虑 n u m s [ l e n − 2 ] ≠ n u m s [ j ] nums[len -2] \ne nums[j] nums[len−2]=nums[j]即可, l e n len len是排列好的有序数组长度, j j j遍历完整个数组。

  • 通解 k = 2 k=2 k=2
cpp 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        
        int sz = nums.size();
        int j = 0;
        for (int num: nums) {
            if ( j < 2 || nums[j - 2] != num){
                nums[j] = num;
                j++;
            }
        }

        return j;
    }
};
  • 模拟
cpp 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int sz = nums.size();
        int i = 0;
        int j = 1;
        int len = 0;
        if (sz <= 2)
            return sz;

        for (int j = 1;j < sz; j++) {
            if (nums[i] != nums[j]) {
                nums[len++] = nums[i];

                if (j == sz - 1) {
                    nums[len++] = nums[j];
                }
                i++;
            }
            else {
                nums[len] = nums[i];
                nums[len + 1] =nums[i];
                len += 2;
                j++;
                while (j < sz && nums[j] == nums[i])
                    j++;
                if (j + 1 < sz) {
                    i = j;
                }
                else if (j < sz) {
                    nums[len++] = nums[j];
                }
            }
        }
       


        return len;
    }
};
相关推荐
搞笑症患者11 分钟前
压缩感知(Compressed Sensing, CS)
算法·最小二乘法·压缩感知·正交匹配追踪omp·迭代阈值it算法
im_AMBER15 分钟前
Leetcode 101 对链表进行插入排序
数据结构·笔记·学习·算法·leetcode·排序算法
予枫的编程笔记15 分钟前
【Java集合】深入浅出 Java HashMap:从链表到红黑树的“进化”之路
java·开发语言·数据结构·人工智能·链表·哈希算法
快手技术32 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱34 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
做科研的周师兄36 分钟前
【MATLAB 实战】栅格数据 K-Means 聚类(分块处理版)—— 解决大数据内存溢出、运行卡顿问题
人工智能·算法·机器学习·matlab·kmeans·聚类
X在敲AI代码37 分钟前
leetcodeD3
数据结构·算法
踩坑记录38 分钟前
leetcode hot100 560.和为 K 的子数组 medium 前缀和 + 哈希表
leetcode
余瑜鱼鱼鱼43 分钟前
Java数据结构:从入门到精通(十一)
数据结构
码农小韩44 分钟前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法