我是靠谱客的博主 积极蜻蜓,最近开发中收集的这篇文章主要介绍C语言算法:力扣——删除排序数组中的重复项,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目要求:
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {

}

输入输出示例:
[0,0,1,1,2,2,3,3]-------------->4,[0,1,2,3]
[]--------------------------------->0,[]
[0,0,0,0,0,0]------------------ >1,[0]

解题思路:
用两个下标分别i指向第一个和j指向第二个数,如果两者相同,则j自+1,指向三个,再比较数组下标为i和j的值大小,计数一次,count+1;如果两者不同,i自+1,将下标为j的值赋给+1后的i,j自+1。直到j为数据最后一个数据。则数组中前(nums.size()-count)的数据是数据。

具体实现:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int count=0;						//计数使用
        for(int i=0,j=1;j<nums.size();j++){
            if(nums[i]==nums[j]){
                count++;					//出现重复元素个数       
            }else{
                nums[++i]=nums[j];//将不重复的元素值,依次从数组的第一个元素开始存放
            }
        }
        return nums.size()-count;
        //数组总长度减去出现重复元素个数,差就是删除数组中重复项后剩下的不重复的元素个数
    }
};

最后

以上就是积极蜻蜓为你收集整理的C语言算法:力扣——删除排序数组中的重复项的全部内容,希望文章能够帮你解决C语言算法:力扣——删除排序数组中的重复项所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部