您的位置:首页 > 其它

Search in Rotated Sorted Array II 旋转数组(有重复元素)里找数@LeetCode

2013-11-21 10:48 615 查看
与之前的题目代码一样。。
是上一题的followup http://blog.csdn.net/fightforyourdream/article/details/16854537

package Level5;

/**
* Search in Rotated Sorted Array II
*
* Follow up for "Search in Rotated Sorted Array": What if duplicates are
* allowed?
*
* Would this affect the run-time complexity? How and why?
*
* Write a function to determine if a given target is in the array.
*
*/
public class S81 {

public static void main(String[] args) {

}

public static boolean search(int[] A, int target) {
return rec(A, target, 0, A.length-1) != -1;
}

// 递归查找
public static int rec(int[] A, int target, int low, int high) {
if (low > high) { // 没找到的情况
return -1;
}

int mid = low + (high - low) / 2;
if (A[mid] == target) { // 找到了
return mid;
}

int res = rec(A, target, low, mid - 1); // 在左侧查找
if (res == -1) { // 如果左侧没找到,继续在右侧查找
res = rec(A, target, mid + 1, high);
}

return res;
}
}


public class Solution {
public boolean search(int[] A, int target) {
return rec(A, target, 0, A.length-1) != -1;
}

public int rec(int[] A, int target, int low, int high){
if(low > high){
return -1;
}

int mid = low + (high-low)/2;
if(A[mid] == target){
return mid;
}
int pos = rec(A, target, mid+1, high);
if(pos != -1){
return pos;
}else{
return rec(A, target, low, mid-1);
}
}
}

// it ends up the same as sequential search
// We used linear search for this question just to indicate that the
// time complexity of this question is O(n) regardless of binary search is applied or not.
public class Solution {
public boolean search(int[] A, int target) {
for (int i = 0; i < A.length; i ++) {
if (A[i] == target) {
return true;
}
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐