Search in a Big Sorted Array
2016-12-13 10:42
134 查看
Given a big sorted array with positive integers sorted by ascending order. The array is so big so that you can not get the length of the whole array directly, and you can only access the kth number by
ArrayReader->get(k) for C++). Find the first index of a target number. Your algorithm should be in O(log k), where k is the first index of the target number.
Return -1, if the number doesn't exist in the array.
Notice
If you accessed an inaccessible index (outside of the array), ArrayReader.get will return
Example
Given
and target =
Given
and target =
ArrayReader.get(k)(or
ArrayReader->get(k) for C++). Find the first index of a target number. Your algorithm should be in O(log k), where k is the first index of the target number.
Return -1, if the number doesn't exist in the array.
Notice
If you accessed an inaccessible index (outside of the array), ArrayReader.get will return
2,147,483,647.
Example
Given
[1, 3, 6, 9, 21, ...],
and target =
3, return
1.
Given
[1, 3, 6, 9, 21, ...],
and target =
4, return
-1.
/** * Definition of ArrayReader: * * class ArrayReader { * // get the number at index, return -1 if index is less than zero. * public int get(int index); * } */ public class Solution { /** * @param reader: An instance of ArrayReader. * @param target: An integer * @return : An integer which is the index of the target number */ public int searchBigSortedArray(ArrayReader reader, int target) { //set the range int start = 0; int end = 1; while(reader.get(end) < target && reader.get(end) < 2147483647) { start = end; end *= 2; } //search within the range while(start + 1 < end) { int mid = start + (end - start) / 2; if(reader.get(mid) < target) { start = mid; } else { end = mid; } } if(reader.get(start) == target) { return start; } else if(reader.get(end) == target) { return end; } return -1; } }
相关文章推荐
- search-in-a-big-sorted-array
- [LintCode] 447 Search in a Big Sorted Array
- [刷题]Search in a Big Sorted Array
- LeeCode Search in a Big Sorted Array java solution use binary search algorithm
- 【刷题】Search in a Big Sorted Array
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- Search in rotated sorted array ii
- L2:05 - Search in Rotated Sorted Array II
- LeetCode:Search in Rotated Sorted Array II
- Leetcode系列-Search in Rotated Sorted Array
- LeetCode--Search in Rotated Sorted Array
- search-in-rotated-sorted-array
- Leetcode#33||Search in Rotated Sorted Array
- LeetCode Search in Rotated Sorted Array
- leetcode33 Search in Rotated Sorted Array
- LeetCode-81-Search in Rotated Sorted Array II 水题
- 【LEETCODE】33-Search in Rotated Sorted Array [Python]
- LeetCode: Search in Rotated Sorted Array
- [Leetcode]33(81). Search in Rotated Sorted Array I, II
- LeetCode-Search in Rotated Sorted Array-旋转数组中的搜索-二分搜索+代数逻辑