【Algorithm】优选算法: 二分查找 binary search 核心思想与例题总结

        二分查找算法是利用数组的二段性进行求解的算法。只要有二段性的数组,都能使用该方法进行求解。

        目录>>

一、核心思想

二、例题总结

1. 704.二分查找 search

2. 34.在排序数组中查找元素的第一个和最后一个位置 searchRange

3. 35.搜索插入位置 searchInsert

4. 69.×的平方根 mySqrt

5. 852.山脉数组的峰顶索引 peakIndexInMountainArray

6. 162.寻找峰值 findPeakElement

7. 153.寻找旋转排序数组中的最小值 findMin

8. LCR 173.点名 takeAttendance


一、核心思想

        二分查找算法是利用数组的二段性进行求解的算法。只要有二段性的数组,都能使用该方法进行求解。

        找出数组的二段性,运用二分查找进行求解。

二、例题总结

1. 704.二分查找 search

 朴素二分查找。

class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;  //右端点
//        int mid = (left + right)/2;   容易溢出
        while (left <= right){
            int mid = left + (right - left) / 2;  //先求区间的一半,防溢出
//            int mid = left + (right - left) / 3;  //区间的三分之一
            if (nums[mid] < target) left = mid+1;
            else if (nums[mid] > target) right = mid-1;
            else return mid;
        }
        return -1;
    }
}

2. 34.在排序数组中查找元素的第一个和最后一个位置 searchRange

class Solution {
    public int[] searchRange(int[] nums, int target) {
        //        处理边界
        int[] ret = new int[2];
        ret[0] = ret[1] = -1;
        if (nums.length ==

你可能感兴趣的:(【Algorithm】算法,算法,java)