力扣26-2023.4.3

力扣26-2023.4.3

问题#

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

image-20230403212930019

image-20230403212946345

方法#

  • 思路:

遍历数组,若后一个和前一个相同,则继续下一个;若后一个与前一个不同,则直接赋值。

  • C++程序:
#include <iostream>
#include <vector>
using namespace std;

int removeDuplicates(vector<int>& nums) {
    /*
    思路:遍历数组,若后一个和前一个相同,则继续下一个;若后一个与前一个不同,则直接赋值。
    */
	if (nums.size() < 2) 
        return nums.size();    //长度为1
	int j = 0;
	for (int i = 1; i < nums.size(); i++)
		if (nums[j] != nums[i]) 
            nums[++j] = nums[i];
	return ++j;
}

int main()
{
    int m[10] = {0,0,1,1,1,2,2,3,3,4}; // 输入数组
    vector<int> nums(m,m+10);
    
    int k = removeDuplicates(nums); // 调用
    cout << "k="<<k<<endl;

    for(int i=0;i<k;i++)
    {
        cout << nums[i]<<endl;
    }
    return 0;
}
  • C程序:
#include <stdio.h>

int removeDuplicates(int* nums, int numsSize){
    if(nums==NULL)
        return 0;   //为空
    int i,j=1;
    for(i=1;i<numsSize;i++){
        if(nums[i]==nums[i-1])
            continue;   //若后一个和前一个相同,则跳过
        nums[j++] = nums[i];    //若不同,则赋值
    }
    return j;
}
int main()
{
    int m[10] = {0,0,1,1,1,2,2,3,3,4}; // 输入数组
    
    int k = removeDuplicates(m,10); // 调用
    printf("k=%d\n",k);

    for(int i=0;i<k;i++)
    {
        printf("%d\n",m[i]);
    }
    return 0;
}
  • 扩展:

数组中元素比较

作者:Hang Shao

出处:https://www.cnblogs.com/pam-sh/p/17284872.html

版权:本作品采用「知识共享」许可协议进行许可。

声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.

posted @   PamShao  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu