码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 702. Search in a Sorted Array of Unknown Size

时间:2020-04-29 10:54:54      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:接下来   时间   实现   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 in nums and its index is 4

Example 2:

Input: array = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!