zoukankan      html  css  js  c++  java
  • 二分查找

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/13164258.html

    二分查找(10min)

    题目链接:https://leetcode-cn.com/problems/binary-search/submissions/

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


    示例 1:

    输入: nums = [-1,0,3,5,9,12], target = 9
    输出: 4
    解释: 9 出现在 nums 中并且下标为 4
    示例 2:

    输入: nums = [-1,0,3,5,9,12], target = 2
    输出: -1
    解释: 2 不存在 nums 中因此返回 -1

    题解:

            思路:

                    1.定义一个最小值存放数组中最小的值,定义一个最大值存放数组中的最大的值。定义一个中间值存放数组中的中间值。

                    2.当中间值-1下标的数组值等于目标值,返回此时数组的值,当中间值-1下标的数组值小于目标值时,把最大值改成中间值+1.当中间值-1下标的数组值大于目标值时,把最大的值改成中间值-1.

                   3.最后没有找到返回-1.

        注意:二分查找的数组必须是有序的。

    class Solution {
        public int search(int[] nums, int target) {
             int len=nums.length;
             int low=1;
             int high=len;
             int mid=(low+high)/2;
             while(low<=high)
             {
                 mid=(low+high)/2;
                if(nums[mid-1]==target)
                return mid-1;
                if(nums[mid-1]>target){
                    high=mid-1;
                }
                else{
                    low=mid+1;
                }
    
             }
             return -1;
        }
    }
  • 相关阅读:
    import()函数
    node-sass安装报错
    npm 安装扩展模块时,因缓存报错的问题汇总
    测试
    export default 和 export 区别
    正则
    物联网
    第十二次课堂总结
    第十二次作业
    作业10
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/13164258.html
Copyright © 2011-2022 走看看