【力扣(LeetCode)】【C/C++】【27.移除元素】

文章介绍了如何使用C++解决LeetCode上的第27题,即移除数组中的指定元素。提供的代码示例展示了如何通过双指针法有效地从数组中删除特定值,并返回新数组的有效长度。在测试用例中,展示了对数组[3,2,2,3]移除元素3后的结果[2,2]。

学习时间:

        2023年1月15日


题目描述:


 题解分享:

// 作     者 : 繁 华 倾 夏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// 力扣(LeetCode):27. 移除元素

// nums:数组 numsSize:数组最大长度 val:要移除元素的值
int removeElement(int* nums, int numsSize, int val) {   

    int dst = 0, src = 0;           // 定义两个数组下标
    while (src < numsSize) {        // 当src小于numsSize时,代表数组内还有元素存在
        if (nums[src] != val) {     // 当src所指向的数组元素不等于val时
            nums[dst] = nums[src];  // 将元素覆盖到dst所指向的下标位置
            src++;                  // 覆盖元素后,移动src和dst位置
            dst++;
        }
        else {                      // 否则则证明src所指向的位置是要删除的元素
            src++;                  // 无需进行覆盖,只移动src指向下一个下标位置进行比较
        }
    }
    return dst;                     // 返回dst,代表被覆盖几次,即将等于val的值全部去除
}

// 测试用例
// 输入 [3, 2, 2, 3]  3
// 输出 [2,2]
int main() {
    int nums[4] = { 3,2,2,3 };

    int numsSize = sizeof(nums) / sizeof(nums[0]);  // 统计数组长度

    int dst = removeElement(nums, numsSize, 3);
    int i = 0;
    while (i<dst) {
        i++;
        printf("%d ", nums[i]);
    }
    return 0;
}

【繁华倾夏】【每日力扣题解分享】【Day1】


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值