leetcode每日一题系列-二分查找-「原生函数」-「手写二分」

104 阅读1分钟

leetcode-704-二分查找

[博客链接]

菜🐔的学习之路

掘金首页

[题目链接]

题目链接

[github地址]

github地址


[用rand7实现rand10]

思路一:二分查找-原生函数

public int search() {
            return Arrays.binarySearch(nums, target) >= 0 ? Arrays.binarySearch(nums, target) : -1;
        }
  • 时间复杂度O(lgn)
  • 空间复杂度O(1)

思路一:手写二分查找

public int search(int[] nums, int target) {
    int l = 0, r = nums.length - 1;
    while (l < r) {
        int mid = l + r >> 1;
        if (nums[mid] < target) {
            l = mid + 1;
        } else {
            r = mid;
        }
    }
    return nums[l] == target ? l : -1;
}
  • 时间复杂度O(lgn)
  • 空间复杂度O(1)