牛客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)
相关文章
|
搜索推荐
高级排序 --- 归并排序(常见经典排序算法)
高级排序 --- 归并排序(常见经典排序算法)
62 0
|
搜索推荐
高级排序 --- 希尔排序(常见经典排序算法)
高级排序 --- 希尔排序(常见经典排序算法)
84 0
|
算法 C++ Python
算法笔记(1)—— 搜索算法:线性搜索(LS)、二分搜索(BS)、记忆化搜索(MS)
算法笔记(1)—— 搜索算法:线性搜索(LS)、二分搜索(BS)、记忆化搜索(MS)
4041 0
【algorithm】算法基础课---二分查找算法(附笔记 | 建议收藏)
【algorithm】算法基础课---二分查找算法(附笔记 | 建议收藏)
【algorithm】算法基础课---二分查找算法(附笔记 | 建议收藏)
|
存储 测试技术
牛客hot100--BM50---两数之和(简单难度)
牛客hot100--BM50---两数之和(简单难度)
147 0
牛客hot100--BM50---两数之和(简单难度)
牛客hot100--BM24---二叉树的中序遍历(中等难度)
牛客hot100--BM24---二叉树的中序遍历(中等难度)
151 0
牛客hot100--BM24---二叉树的中序遍历(中等难度)
牛客hot100--BM23---二叉树的前序遍历(简单难度)
牛客hot100--BM23---二叉树的前序遍历(简单难度)
143 0
牛客hot100--BM23---二叉树的前序遍历(简单难度)
牛客hot100--BM88---判断是否为回文字符串(入门难度)
牛客hot100--BM88---判断是否为回文字符串(入门难度)
115 0
牛客hot100--BM88---判断是否为回文字符串(入门难度)
牛客hot100--BM25---二叉树的后序遍历(简单难度)
牛客hot100--BM25---二叉树的后序遍历(简单难度)
96 0
牛客hot100--BM25---二叉树的后序遍历(简单难度)
牛客hot100--BM6---判断链表中是否有环(简单难度)
牛客hot100--BM6---判断链表中是否有环(简单难度)
147 0
牛客hot100--BM6---判断链表中是否有环(简单难度)