标签:接下来 时间 实现 tar 空间 known amp its nbsp
搜索长度未知的有序数组。题目给了一个数组和一个target数字,如果你能在input数组中找到target,就输出其index,否则return -1。例子,
Example 1:
Input:array
= [-1,0,3,5,9,12],target
= 9 Output: 4 Explanation: 9 exists innums
and its index is 4Example 2:
Input:array
= [-1,0,3,5,9,12],target
= 2 Output: -1 Explanation: 2 does not exist innums
so return -1
还是典型的二分法题目。这个题因为你不知道input数组的长度,所以你只能用reader.get()来判断在某个位置上的数字和target的大小关系。这个地方的思路是创建一个变量high,从1开始,若小于target就扩大一倍查找,直到找到第一个大于target的位置就停下。此时把high除以2得到low,这样找target的范围会被固定在low和high之间。接下来的部分就是常规的二分法了。
时间O(logn)
空间O(1)
Java实现
1 class Solution { 2 public int search(int[] nums, int target) { 3 // corner case 4 if (nums == null || nums.length == 0) { 5 return -1; 6 } 7 8 // normal case 9 int left = 0; 10 int right = nums.length - 1; 11 while (left <= right) { 12 int mid = left + (right - left) / 2; 13 if (nums[mid] == target) { 14 return mid; 15 } else if (nums[mid] < target) { 16 left = mid + 1; 17 } else { 18 right = mid - 1; 19 } 20 } 21 return -1; 22 } 23 }
[LeetCode] 702. Search in a Sorted Array of Unknown Size
标签:接下来 时间 实现 tar 空间 known amp its nbsp
原文地址:https://www.cnblogs.com/aaronliu1991/p/12800239.html