力扣---LeetCode26. 删除有序数组中的重复项

简介: 第四弹——力扣LeetCode每日一题

前言


努力从今天开始成功从零开始 只要你还愿意努力世界就会给你惊喜

本章的内容是力扣每日随机一题的部分方法的解析

提示:以下是本篇文章正文内容,下面案例可供参考

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


给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

1.更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。

2.返回 k 。

链接


26.删除有序数组中的重复项题链接link

方法一:三指针


时间复杂度O(N)

空间复杂度O(1)

int removeDuplicates(int* nums, int numsSize)
{
    int src1=0;
    int src2=1;
    int dest=0;
    while(src2<numsSize)
    {
        if(nums[src1]!=nums[src2])
        {
            nums[dest++]=nums[src1];
            src1=src2;
            src2++;
        }
        else
        {
            src2++;
        }
    }
    nums[dest++]=nums[src1];
    return dest;
}

方法二:双指针


时间复杂度O(N)

空间复杂度O(1)

int removeDuplicates(int* nums, int numsSize)
{
    int src=1;
    int dest=0;
    while(src<numsSize)
    {
        if(nums[src]==nums[dest])
        {
            src++;
        }
        else
        {
            nums[++dest]=nums[src++];
        }
    }
    return dest+1;
}

总结


Ending,今天的力扣每日一题内容就到此结束啦,如果后续想了解更多,就请关注我吧。

相关文章
|
2月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
2月前
|
存储
【合并两个有序数组】LeetCode第88题讲解
【合并两个有序数组】LeetCode第88题讲解
|
2天前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
4 0
|
2天前
|
Java
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
7 1
|
2天前
leetcode代码记录(删除字符串中的所有相邻重复项
leetcode代码记录(删除字符串中的所有相邻重复项
8 0
|
2天前
leetcode代码记录(有序数组的平方
leetcode代码记录(有序数组的平方
6 0
|
3天前
leetcode代码记录(有序数组两数之和
leetcode代码记录(有序数组两数之和
10 0
|
25天前
【力扣】80.删除有序数组中的重复项Ⅱ
【力扣】80.删除有序数组中的重复项Ⅱ
|
1月前
|
存储
【力扣经典面试题】80. 删除有序数组中的重复项 II
【力扣经典面试题】80. 删除有序数组中的重复项 II
|
1月前
|
存储
【力扣经典面试题】合并两个有序数组
【力扣经典面试题】合并两个有序数组

热门文章

最新文章