我们一起进大厂之leetcode算法刷题——day1打卡

由于自己是Java萌新,一路过来才刚入门,数据结构啥还木了解,暂不考虑时间复杂度,以实现为主。争取月薪过万呀。
坚持就是胜利。

704. 二分查找 ❤️

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的
target,如果目标值存在返回下标,否则返回 -1。

class Solution {
    public int search(int[] nums, int target) {
      //循环查找,找不到就返回-1
        for(int i=0;i<nums.length;i++){
            if(target == nums[i]){
                return i;
            }
        }
        return -1;
    }

}

278. 第一个错误的版本 ❤️

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。

你可以通过调用 bool isBadVersion(version) ,错误版本返回true。接口来判断版本号 version
是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int left =1;
        int right = n;
        int mid=0;
        while(left<right){
            mid = left+(right-left)/2;
            if(!isBadVersion(mid)){
                left = mid+1;//如果中间值返回false,表示错误出现在的[mid+1,rirht]中,只要有一次返回true,后面就会一直返回true,left就一直等于第一次返回true的值
            }else{
                right = mid;//如果中间值返回false,表示错误出现在的[left,mid]中
            }
        }
        return left;  
    }
}

35. 搜索插入位置 ❤️

给定一个排序数组(数组值递增)和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

//    思路就是相等时,返回当前的下标,不相等时,只有3种情况,一个就是比最大的大,比最小的小。比最小的小输出的就是当前比较的下标,所以可以和等于归纳为一种情况,比最大的大,直接返回nums.length;
//    在中间时,由于数组为递增组合,比当前的小时,一定不会存在和数组后面的数相等的情况,于是输出当前的下标就好
class Solution {
     public static int searchInsert(int[] nums, int target) {
        int m = 0;
        //循环查找
        for (int i = 0; i < nums.length; i++) {
            if (target <= nums[i]) {
                return m = i;
            }
        }
        return nums.length;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值