[LeetCode] Search for a Range
来源:互联网 发布:伪娘专用阴茎套淘宝 编辑:程序博客网 时间:2024/05/16 01:53
问题:
Given a sorted array of integers, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1]
.
For example,
Given [5, 7, 7, 8, 8, 10]
and target value 8,
return [3, 4]
.
明显是要用binary search。我的方法是,先找下界,再找上界,用两个不同的函数。
代码:
class Solution {public:int searchLower(int A[], int start, int end, int target) {if (start > end)return -1;if (start == end) {if (A[start] != target)return -1;return start;}int mid = start + (end - start) / 2;if (mid == 0) {if (A[0] == target)return 0;if (A[0] > target)return -1;if (A[0] < target)return searchLower(A, mid + 1, end, target);}if (A[mid] == target && A[mid - 1] < target) return mid;if (A[mid] < target) return searchLower(A, mid + 1, end, target);if (A[mid] >= target) return searchLower(A, start, mid - 1, target);}int searchUpper(int A[], int n, int start, int end, int target) {if (start > end)return -1;if (start == end) {if (A[start] == target)return start;return -1;}int mid = start + (end - start) / 2;if (mid == n-1) return searchUpper(A, n, mid, mid, target);if (A[mid] == target && A[mid + 1] > target) return mid;if (A[mid] <= target) return searchUpper(A, n, mid + 1, end, target);if (A[mid] > target) return searchUpper(A, n, start, mid - 1, target);}vector<int> searchRange(int A[], int n, int target) {vector<int> result (2, -1);int l = searchLower(A, 0, n-1, target);int u = searchUpper(A, n, 0, n-1, target);result[0] = l;result[1] = u;return result;}};
0 0
- LeetCode: Search for a Range
- LeetCode Search for a Range
- [Leetcode] Search for a Range
- LeetCode : Search for a Range
- [LeetCode] Search for a Range
- [Leetcode] Search for a Range
- Leetcode Search for a Range
- [LeetCode]Search for a Range
- LeetCode-Search for a Range
- [leetcode] Search for a Range
- LeetCode - Search for a Range
- Search for a Range leetcode
- LeetCode | Search for a Range
- LeetCode - Search for a Range
- LeetCode: Search for a Range
- leetcode: Search for a Range
- 【leetcode】Search for a Range
- Leetcode: Search for a Range
- 在Windows平台搭建Java 1.7开发环境
- php 动态创建XML文件类
- [LeetCode] Remove Duplicates from Sorted List II
- [leet code] Maximum Subarray
- [LeetCode] Remove Duplicates from Sorted List
- [LeetCode] Search for a Range
- 如何用Visual Studio编译Java源代码
- Block-levelDB源码解析
- Java Mail(三):Session、Message详解
- C/C++注册动态对象到Lu系统并进行运算符重载
- iOS客户端网络数据处理之解放劳动,关于客户端开发之我鉴(四)
- ssh连接超时解决方法
- 指针/引用参数
- 没有谁是不可取代的!