leetcode:Search for a Range
2014-03-17 21:57
309 查看
二分法:
public class Solution {
public int[] searchRange(int[] A, int target) {
return msearch(A,target,0,A.length-1);
}
public static int[] msearch(int[] A, int target, int begin, int end) {
int mid,i;
int[] rst={-1,-1};
int n=end-begin+1;
if(n==0)
return rst;
if(n==1)
{
if(A[begin]==target)
{
rst[0]=begin;rst[1]=begin;
return rst;
}
else
return rst;
}
mid=begin+n/2;
if(target>A[mid])
{
return msearch(A,target,mid+1,end);
}
else if(target<A[mid])
{
return msearch(A,target,begin,mid-1);
}
else
{
i=mid;
while(i>=begin && A[i]==target)
{
i--;
}
rst[0]=i+1;
i=mid;
while(i<=end && A[i]==target)
{
i++;
}
rst[1]=i-1;
}
return rst;
}
}
public class Solution {
public int[] searchRange(int[] A, int target) {
return msearch(A,target,0,A.length-1);
}
public static int[] msearch(int[] A, int target, int begin, int end) {
int mid,i;
int[] rst={-1,-1};
int n=end-begin+1;
if(n==0)
return rst;
if(n==1)
{
if(A[begin]==target)
{
rst[0]=begin;rst[1]=begin;
return rst;
}
else
return rst;
}
mid=begin+n/2;
if(target>A[mid])
{
return msearch(A,target,mid+1,end);
}
else if(target<A[mid])
{
return msearch(A,target,begin,mid-1);
}
else
{
i=mid;
while(i>=begin && A[i]==target)
{
i--;
}
rst[0]=i+1;
i=mid;
while(i<=end && A[i]==target)
{
i++;
}
rst[1]=i-1;
}
return rst;
}
}
相关文章推荐
- Leetcode: Search for a Range
- Leetcode -- 34. Search for a Range
- Leetcode_34_Search for a Range
- LeetCode第34题之Search for a Range
- leetcode - Search for a Range
- Search for a Range - LeetCode 34
- LeetCode——Search for a Range
- [LeetCode]34. Search for a Range
- Search for a Range [LeetCode]
- [leetcode]Search for a Range
- 【LeetCode】34. Search for a Range
- (leetcode)Search for a Range
- 【leetcode】Search for a Range
- Leetcode 第7章 查找 7.1 search for a range
- [leetcode] 34. Search for a Range
- [Leetcode] 34. Search for a Range
- LeetCode Search for a Range
- [LeetCode] 096: Search for a Range
- leetCode 34.Search for a Range (搜索范围) 解题思路和方法
- leetcode--34. Search for a Range