栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

80. 删除有序数组中的重复项 II - 力扣(LeetCode) (leetcode-cn.com)

实现这道题有一个简单版本,目的是N个重复的数只留下一个,建议了解这个简单版后再看这篇文章;

改成两个其实也”很好解决“,思路是双指针算法,具体步骤如下:

1:i代表往前走的指针,j为预定指针,ne记录最近一次满足nums[i]!=nums[i+1]的i位置;

2:如果发现nums[i]!=nums[i+1]的情况,则判断i-ne+1>=2是否成立,如果成立则让j走两步,否则走一步。

如此循环当i

注意,这里的在满足nums[i]!=nums[i+1]时i与ne下标围成的区间刚好时一片连续相等的区间。

下面是具体代码

class Solution {public:    int unique(vector &nums){        int i,j,ne;        for(i=0,j=0,ne=0;i=2){                     for(int k=j;k& nums) {        nums.push_back(0x3f3f3f3f);        int len=unique(nums);        return len;    }};

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/766814.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号