LeetCode 704.二分查找
题目:
给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果 target
存在返回下标,否则返回 -1
。
你必须编写一个具有 O(log n)
时间复杂度的算法。
思路:灵神 闭区间写法,>= > < <=转化 ,外加 考虑一些特殊情况
代码:
class Solution {public int search(int[] nums, int target) {int ans = lowerBound(nums, target);if (ans == nums.length)return -1;if (nums[ans] == target) {return ans;} else {return -1;}}private int lowerBound(int[] nums, int target) {int left = 0, right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return left;}
}
性能:
时间复杂度o(logn)
空间复杂度o(1)