首页 > 其他分享 >LeetCode 26 删除有序数组中的重复项

LeetCode 26 删除有序数组中的重复项

时间:2023-10-04 18:57:05浏览次数:30  
标签:26 指向 nums ++ 元素 fast low 数组 LeetCode

LeetCode 26 删除有序数组中的重复项

1. 题目地址

    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150

2. 题解

    这道题由于要删除的是重复出现的元素,并且给定数组是单调递增的。那么我们可以发现一个规律:
        给定两个元素x和y,y在x的后一个位置。那么,y一定大于等于x。换句话说,后面的元素只能比前面的元素等或大,不可能小。
    所以,我们只需要去看后面的元素是否跟前一个元素相等即可。
    这道题采用的是快慢指针的思想。具体操作如下:
        1.  定义快慢指针low和fast。low指向第一个元素,而fast指向下一个元素。
        2.  在遍历的过程中:
            2.1 如果fast指向的元素跟low指向的元素不相等,那么arr[++low] = arr[fast]。fast++即可。
            2.2 如果fast指向的元素跟low指向的元素相等,那么fast++,low不变即可。
        3.  当fast走完之后,low + 1就是删除后数组元素个数。

3. 代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int low,fast;
        for(fast = 1,low = 0; fast < nums.size(); fast++){
            if(nums[fast] != nums[low]){
                nums[++low] = nums[fast];
            }
        }
        return low + 1;
    }
};

标签:26,指向,nums,++,元素,fast,low,数组,LeetCode
From: https://www.cnblogs.com/gao79135/p/17742574.html

相关文章

  • LeetCode 27 移除元素
    LeetCode27移除元素1.题目地址https://leetcode.cn/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-1502.题解这道题主要采用的是快慢指针的思想。具体操作如下:1.定义快慢指针:low和fast。2.首先,快慢指针均指......
  • LeetCode 88 合并两个有序数组
    LeetCode88合并两个有序数组1.题目地址https://leetcode.cn/problems/merge-sorted-array/description/?envType=study-plan-v2&envId=top-interview-1502.题解这道题跟归并排序的归并操作非常类似。(具体内容可以查看我的博客,这里不再赘述。)但是有一个需要注意......
  • 流畅的python笔记 (二) 2.序列构成的数组
    内置序列类型分类1:容器序列(能存放不同类型):list,tuple,collections.deque扁平序列(不能存放不同类型):str,bytes,bytearray,memoryview,array.array分类2:可变序列(能被修改):list,bytearray,array.array,collections.deque,memoryview不可变序列:tuple,str,bytes列表推导......
  • 十四天学会C++之第三天(数组和字符串)
    1.数组的定义和初始化数组是一种由相同数据类型的元素组成的集合,这些元素按照一定的顺序存储在连续的内存位置上。数组的大小在创建时是固定的,无法在运行时改变。在C++中,数组的定义和声明非常简单。定义一个数组:数据类型数组名[数组大小];数据类型可以是整数、浮点数、字符等,数组......
  • 2023-10-04:用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你
    2023-10-04:用go语言,现有一棵无向、无根的树,树中有n个节点,按从0到n-1编号给你一个整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条边。每个节点都关联一个价格。给你一个整数数组price,其中price[i]是第i......
  • 2023-10-04:用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你
    2023-10-04:用go语言,现有一棵无向、无根的树,树中有n个节点,按从0到n-1编号给你一个整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条边。每个节点都关联一个价格。给你一个整数数组price,其中price[i]是......
  • 02-JZ4 二维数组中的查找
    我的想法:暴力:按行遍历,比较---O(m*n)折半:行折半查找;有n行,折半n次----O(nlgn)问题:不满足时间复杂度O(m+n)正确思路:左下角开始比较arr[i][0]>target--往小找,往上走,i--;arr[i][0]<target--往大找,往右走,j++;arr[i][0]==target,即找到循环截至条件,超出数组边界适用场景:迷宫......
  • arduino 使用String 替代不定长byte[]数组
    使用串口传输hex数据时,常用byte[]数组接收数据,若预先不能知道将要接收到数据的数量,那么byte[]数组的长度很难处理。偶尔想到用String对象来存储串口传输hex数据应当很方便,经测试,非常成功。测试程序:Stringhh="";voidsetup(){//putyoursetupcodehere,torunonce:......
  • 笔记——树状数组
    蓝月の笔记——树状数组篇在可恶的OI里,我们尝尝会遇到一些区间问题,例如区间修改单点查询,单点修改区间查询,区间修改单点查询,单点修改单点查询。其中,单点修改区间查询,就是树状数组最经典的用法啦!Luogu-P3374给定一个长度为\(n\)的序列\(a_1,a_2,\cdots,a_n\)和两种操作:......
  • C语言之数组详解
    2.1数组的概念数组是若干个相同类型的变量在内存中有序存储的集合。inta[10];//定义了一个整型的数组a,a是数组的名字,数组中有10个元素,每个元素的类型都是int类型,而且在内存中连续存储。这十个元素分别是a[0]a[1]….a[9]a[0]~a[9]在内存中连续的顺序存储2.2数组的分......