15、高质量代码:算法与鲁棒性解析

高质量代码:算法与鲁棒性解析

1. 数组中移除数字

在处理数组中移除特定数字的问题时,有一种高效的方法。该问题不要求保留剩余数字的顺序,只关注新的长度。我们可以将数组划分为两部分,左边部分包含所有非目标值,右边部分包含待移除的目标值。

为了解决这个问题,我们定义两个指针:
- 第一个指针(记为 P1)从数组开头开始向前移动,直到遇到等于目标值的数字。
- 第二个指针(记为 P2)从数组末尾开始向后移动,直到遇到不等于目标值的数字。

然后交换 P1 和 P2 所指向的数字,重复这个移动和交换操作,直到扫描完所有目标数字。

以下是 Java 代码示例:

int remove_solution2(int numbers[], int n) {
    int p1 = 0;
    while(p1 < numbers.length && numbers[p1] != n)
        ++p1;

    int p2 = numbers.length - 1;
    while(p1 < p2){
        while(p1 < numbers.length && numbers[p1] != n)
            ++p1;
        while(p2 > 0 && numbers[p2] == n)
            --p2;

        if(p1 < p2){
            numbers[p1] = numbers[p2];
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值