牛客hot100--BM17---二分查找I(简单难度)

简介: 牛客hot100--BM17---二分查找I(简单难度)

目录

题目概述(简单难度)

题目链接:

点我进入牛客

思路与代码

思路展现

没啥好说的,经典二分查找法

代码示例

import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @param target int整型 
     * @return int整型
     */
    public int search (int[] nums, int target) {
        if(nums == null) {
            return -1;
        }
        int i = 0;
        int j = nums.length - 1;
        while(i <= j) {
            int mid = (i + j) / 2;
            if(nums[mid] < target) {
                i = mid + 1;
            }else if(nums[mid] > target){
                j = mid - 1;
            }else {
                return mid;
            }
        }
        return -1;
    }
}

时间复杂度: O(logn), 每次区间收敛一半

空间复杂度: O(1). 常数个变量

注意事项

这道题目注意在while循环的时候一定要加等于号,如果不加的话会有如下测试用例跑不过去:

以下代码错误:

while(i < j)
相关文章
【LeetCode 热题 HOT 100】139. 单词拆分【中等】
【LeetCode 热题 HOT 100】139. 单词拆分【中等】
|
C++
【PAT甲级 - C++题解】1043 Is It a Binary Search Tree
【PAT甲级 - C++题解】1043 Is It a Binary Search Tree
91 0
【PAT甲级 - C++题解】1043 Is It a Binary Search Tree
|
算法
LeetCode 热题 HOT 100题解 (easy级别)(一)
LeetCode 热题 HOT 100题解 (easy级别)
164 0
|
机器学习/深度学习
LeetCode 热题 HOT 100题解 (easy级别)(二)
LeetCode 热题 HOT 100题解 (easy级别)
109 0
|
算法 C++ Python
算法笔记(1)—— 搜索算法:线性搜索(LS)、二分搜索(BS)、记忆化搜索(MS)
算法笔记(1)—— 搜索算法:线性搜索(LS)、二分搜索(BS)、记忆化搜索(MS)
4014 0
|
存储 测试技术
牛客hot100--BM50---两数之和(简单难度)
牛客hot100--BM50---两数之和(简单难度)
138 0
牛客hot100--BM50---两数之和(简单难度)
牛客hot100--BM24---二叉树的中序遍历(中等难度)
牛客hot100--BM24---二叉树的中序遍历(中等难度)
139 0
牛客hot100--BM24---二叉树的中序遍历(中等难度)
牛客hot100--BM23---二叉树的前序遍历(简单难度)
牛客hot100--BM23---二叉树的前序遍历(简单难度)
131 0
牛客hot100--BM23---二叉树的前序遍历(简单难度)
牛客hot100--BM25---二叉树的后序遍历(简单难度)
牛客hot100--BM25---二叉树的后序遍历(简单难度)
89 0
牛客hot100--BM25---二叉树的后序遍历(简单难度)
牛客hot100--BM88---判断是否为回文字符串(入门难度)
牛客hot100--BM88---判断是否为回文字符串(入门难度)
102 0
牛客hot100--BM88---判断是否为回文字符串(入门难度)