力扣数组专题(1)

本文介绍了二分查找算法的原理和实现,通过具体示例展示了如何在有序数组中高效地查找目标值。代码展示了一个Java实现,执行效率高,时间复杂度为O(log n)。二分查找在信息技术中常用于优化搜索效率,如数据库索引和数据结构的查找操作。
摘要由CSDN通过智能技术生成

二分查找法

题目来源:
704.二分查找 https://leetcode.cn/problems/binary-search/
题目:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
代码如下:
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:42.1 MB, 在所有 Java 提交中击败了49.01% 的用户
通过测试用例:47 / 47

class Solution {
    public int search(int[] nums, int target) {
        if(nums.length==0){
            return -1;
        }
        int first = 0;
        int mid = nums.length/2;
        int last = nums.length-1;
        if(nums[0]==target){
            return 0;
        }
        if(nums[nums.length-1]==target){
            return nums.length-1;
        }
        while(true){
            if(nums[mid]==target){
                return mid;
            }
            else if(nums[mid]>target){
                last = mid;
                mid = (last + first) / 2;  
            }
            else if(nums[mid]<target){
                first = mid;
                mid = (last + first) / 2; 
            }
            if(mid==first){
                return -1;
            }
        }
    }
}

二分查找法原理:
假设1-100范围内让你猜一个数,你难道是从1开始默默数到100?如果是1还好,一下就猜中了,如果是100呢,等你数完天都黑了,所以啊,我们不如从50猜起来,如果大了就猜1-50之间的25,小了就猜50-100之间的75,以此类推。二叉搜索树,也是这种原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值