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

简介: 力扣题目——删除有序数组中的重复项

1. 题目描述

image.png

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就是数组中元素的个数。

流程演示:
image.png
image.png
image.png
image.png

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;
}

相关文章
|
7月前
|
DataX
☀☀☀☀☀☀☀有关栈和队列应用的oj题讲解☼☼☼☼☼☼☼
### 简介 本文介绍了三种数据结构的实现方法:用两个队列实现栈、用两个栈实现队列以及设计循环队列。具体思路如下: 1. **用两个队列实现栈**: - 插入元素时,选择非空队列进行插入。 - 移除栈顶元素时,将非空队列中的元素依次转移到另一个队列,直到只剩下一个元素,然后弹出该元素。 - 判空条件为两个队列均为空。 2. **用两个栈实现队列**: - 插入元素时,选择非空栈进行插入。 - 移除队首元素时,将非空栈中的元素依次转移到另一个栈,再将这些元素重新放回原栈以保持顺序。 - 判空条件为两个栈均为空。
|
11月前
|
存储 Java
数据结构第三篇【链表的相关知识点一及在线OJ习题】
数据结构第三篇【链表的相关知识点一及在线OJ习题】
90 7
|
存储 索引
【数据结构OJ题】设计循环队列
力扣题目——设计循环队列
129 1
【数据结构OJ题】设计循环队列
【数据结构OJ题】复制带随机指针的链表
力扣题目——复制带随机指针的链表
123 1
【数据结构OJ题】复制带随机指针的链表
【数据结构OJ题】用栈实现队列
力扣题目——用栈实现队列
102 0
【数据结构OJ题】用栈实现队列