Day1 数组part01

本文记录了编程训练营初期的两个题目,分别是C/C++实现的二分查找算法和移除指定元素的双指针法。作者分享了解题过程和对技巧的感受。
摘要由CSDN通过智能技术生成

是进训练营之前就断断续续刷过的题了,因为想要找个督促自己刷题进的营。这里补个档,汇总一下前三天的题目:

1. 704.二分查找

int search(int* nums, int numsSize, int target){
    int left = 0, right = numsSize;
    int middle = 0;
    while(left < right)
    {
        middle = (left + right)/2;
        if(nums[middle] > target)
        {
            right = middle;
        }
        else if (nums[middle] < target)
        {
            left = middle + 1;
        }
        else
            return middle;
    }
    return -1;
}

2. 27.移除元素

这道题目用两种方法都做了一遍,双指针法的思想确实巧妙,自己写出来之后感觉非常棒

int removeElement(int* nums, int numsSize, int val) {
#if 0    
    int read = 0, write = 0;
    for(read = 0; read < numsSize; read++)
    {
        if(val != nums[read])
        {
            nums[write++] = nums[read];
        }
    }
    return write;
#else
    int left = 0, right = numsSize - 1;
    while(left <= right)
    {
        while(left <= right && nums[left] != val)
        {
            ++left;
        }

        while(left <= right && nums[right] == val)
        {
            --right;
        }

        if(left < right)
        {
            nums[left++] = nums[right--];
        }
    }
    return left;
#endif
}

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值