每日一题——删除有序数组中的重复项

简介: 每日一题——删除有序数组中的重复项

删除有序数组中的重复项

题目链接


注:本题所采用的方法是建立在移除元素的基础之上的,如果大家对双指针的方法不大了解,或者不会做《移除元素》这一题,建议先去看看👉传送门

具体步骤

  • 定义两个指针slowfastslow指向数组的第一个元素,fast指向数组的第二个元素
  • fast开始向后遍历数组,如果其值等于slow所指向的元素,那么则说明出现重复元素,fast继续向后移动
  • 如果fast所指向的元素不等于slow的,那么进行操作[++slow] = [fast++],即先让slow向后移动一位再进行赋值操作,接着fast继续后移
  • 直到fast遍历完整个数组

如图所示:


实现代码

int removeDuplicates(int* nums, int numsSize){
    int slow = 0;
    int fast = 1;
    while(fast < numsSize)
    {
        //相等就不赋值,fast继续遍历
        if(nums[fast] == nums[slow])
            fast++;
        //不相等就赋值
        else
            nums[++slow] = nums[fast++];
    }
    //返回新数组大小
    return slow + 1;
}
相关文章
|
1月前
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
33 2
|
3月前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
3月前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
5月前
|
索引
leetcode题解:26.删除有序数组重复项
leetcode题解:26.删除有序数组重复项
18 0
|
存储 算法 C语言
LeetCode每日一题26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
85 0
|
6月前
|
算法
LeetCode | 26. 删除有序数组中的重复项
LeetCode | 26. 删除有序数组中的重复项
【每日一题】2.LeetCode——删除有序数组中的重复项
【每日一题】2.LeetCode——删除有序数组中的重复项
|
6月前
|
存储 算法 索引
LeetCode热题 80. 删除有序数组中的重复项 II
LeetCode热题 80. 删除有序数组中的重复项 II
46 0
|
6月前
|
C++
LeetCode 26. 删除有序数组中的重复项
LeetCode 26. 删除有序数组中的重复项
35 0
26.删除有序数组中的重复项(LeetCode)
26.删除有序数组中的重复项(LeetCode)