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

【数据结构】C语言练习题---去重算法,删除有序数组中的重复项

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

【数据结构】C语言练习题---去重算法,删除有序数组中的重复项

题目链接:

力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

解题思路:

代码实现:


int removeDuplicates(int* nums, int numsSize)
{
    int up = 1; //注意这里开头是1
    int down = 0;
    while (up < numsSize)
    {
        if (nums[up] != nums[down])
        {
            //up++;
            down++;//必需先对down进行++,才能保证下一行代码的等于
            nums[down] = nums[up];
            up++;
        }
        else
        {
            up++;
            //numsSize[down] = numsSize[up];
            //down++;
        }
    }

    return down + 1;

}

 思路讲解:

当一开始的相邻俩个位置的数据不相同时,down++,即向前移动一个位置,此时down 与 up 指向同一位置,但是因为一开始俩个数据的不同,所以up++ 要接着去寻找下一个元素,否则达不到去重的目的,

假设在找到俩个元素之前已经执行过 if 语句的第一部分代码,所以程序一定在up 与 down 位置不是指在同一位置上的

重要的是题目中所给的数组是升序排列的,所以如果有俩个元素相同,则一定是相邻位置

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

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

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