【数据结构OJ题】删除有序数组中的重复项

原题链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/

目录

1. 题目描述

2. 思路分析

3. 代码实现


1. 题目描述

【数据结构OJ题】删除有序数组中的重复项_第1张图片

2. 思路分析

双指针算法,定义两个变量src和dst,一开始让src和dst指向num[ ]数组的第一个元素,再使用if语句判断。

如果nums[src]==nums[dst],就让src指向下一位,即src++。如果nums[src]!=nums[dst]就让dst指向下一位,即dst++,再将src的值赋给nums[dst],赋完值后让src指向下一位,即src++。

最后dst+1就是数组中元素的个数。

流程演示:

【数据结构OJ题】删除有序数组中的重复项_第2张图片

 

 

【数据结构OJ题】删除有序数组中的重复项_第3张图片 

【数据结构OJ题】删除有序数组中的重复项_第4张图片 

【数据结构OJ题】删除有序数组中的重复项_第5张图片 

3. 代码实现

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

    }
    return dst + 1;
}

【数据结构OJ题】删除有序数组中的重复项_第6张图片

 

 

你可能感兴趣的:(数据结构,数据结构,c语言,算法)