27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组(双指针遍历)上

简介: 27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组(双指针遍历)上

目录

[27. 移除元素-力扣](https://leetcode.cn/problems/remove-element/description/?languageTags=c)

[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)

[88. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/)

下面的几道题e1e8eba554c84add9285f9f5e579a360.png,都运用一个双指针(下标)遍历法


27. 移除元素-力扣


示例1:


输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]

示例2:


输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]


这道题最容易想到的思想是开辟一个新数组,然后遍历原数组,如果原数组中的某个值不等于val的值,就把这个值放到新数组中


如图:


02ff2e0815e84fe1aabb10696f4cdcc1.png





最开始src指向的元素等于val,src向后走,des不变





f17244eb0791478ea66ae15d78d01d6f.png


src指向的值不等于val,所以将这个值放到des指向的空间中,接着src和des都向后移





c096b7c256bb44f78ddecd108f6c33b9.png


接下来的步骤以此类推,最终会得到一个合适的数组


但是这个方法显然不满足题中要求的原地修改,但是我们可以借助这个思想,只不过是在原数组上进行操作


让src和des都指向原数组,其余步骤都与上面那个方法类似





93a99c6002a64fc5be68375bc1fd1161.png





最开始src指向的元素等于val,src向后走,des不变




4d92ea6dde0644b9b6bbdd7f56755798.png



接着src指向的元素的值不等于val,把这个值赋给des指向的空间中,接着src des向后挪



44394aa1353149adae9926590fc43b15.png



src指向的元素的值不等于val,把这个值赋给des指向的空间中,接着src des向后挪


5bfa9a3612e14759a1f36e534b273dae.png





src指向的元素等于val,src向后走,des不变


1eaabff3b7c743079aa20a3ea83ab9b4.png




此时,src已经遍历出了数组,遍历结束,可以看到实际上操作后的数组就是[2,2],长度是2,也正好是作为下标的des的值,所以最后返回des的值。


代码如下:


int removeElement(int* nums, int numsSize, int val) {
    int des = 0;
    for (int src = 0; src < numsSize; src++) {
        if (nums[src] != val) {
            nums[des] = nums[src];
            des++;
        }
    }
    return des;
}


目录
相关文章
|
7月前
|
存储 算法 C语言
通过指针引用数组元素
通过指针引用数组元素
47 0
|
7月前
|
C语言 C++
数组元素的指针
数组元素的指针
30 0
|
7月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
25天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
32 3
|
25天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
32 2
|
4月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。
|
7月前
|
C语言
在引用数组元素时指针的运算
在引用数组元素时指针的运算
54 0
|
7月前
|
C语言
通过指针引用数组元素
通过指针引用数组元素
45 0
|
7月前
|
存储 C语言
数组元素的指针
数组元素的指针
24 0
|
7月前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
57 1