算法刷题Day1|数组篇之704.二分查找法 27.移除元素

目录

704. 二分查找法

27. 移除元素


704. 二分查找法

力扣链接

题目讲解

解题思路:前提是有序数组+无重复数据,遵循循环不变量原则,确定数组的区间,左闭右闭、左闭右开,target在middle左区间,则右边界移动;反之左边界移动,相等则middle为target的下标。

Java代码:

class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        while (left <= right) {
            int middle = left + ((right - left) / 2); //防止int越界,等同于 (left + right) / 2
            if (nums[middle] > target) {
                right = middle - 1;
            } else if (nums[middle] < target) {
                left = middle + 1;
            } else {
                return middle;
            }
        }
        return -1;
    }
}

27. 移除元素

力扣链接

题目讲解​​​​​​​

解题思路:

双指针,快指针查找不用删除的元素;慢指针:更新数组元素的下标。循环快指针,如果快指针找到val,则slowindex不用更新;反之则更新

Java代码:

class Solution {
    public int removeElement(int[] nums, int val) {
            int slowindex = 0;
            for (int fastindex=0; fastindex < nums.length; fastindex++) {
                if (nums[fastindex] != val) {
                    nums[slowindex++] = nums[fastindex];
                }
            }
            return slowindex; //slowindex最后一步已经+1了
    }
}

 写在末尾:开始写算法刷题博客的第一天,特此记录,用来激励自己持续输出。路漫漫其修远兮,吾将上下而求索,与君共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值