首页 > 代码库 > Search in Rotated Sorted Array
Search in Rotated Sorted Array
地址:https://oj.leetcode.com/problems/search-in-rotated-sorted-array/
非递归进行剪枝搜索版本:
public class Solution { public int search(int[] A, int target) { int low =0, high = A.length-1; // high 小于target 从low开始搜索 if(A[high]<target){ int pivot = A[high]; while(low<=high ){ // 如果low大于target 或者low小于pivot 直接返回没找到 if(A[low]>target || A[low]<pivot){ return -1; }else { if(A[low]==target) return low; } low++; } }else { int pivot = A[high]; while(low<=high){ if(A[high]<target || A[high]>pivot){ return -1; } if(A[high]==target) return high; high--; } } return -1; }}
递归版本实现:
public class Solution { public static int search(int[] A, int target) { return rec(A, target, 0, A.length-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; } }
Search in Rotated Sorted Array
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。