33. Search in Rotated Sorted Array
2016-03-09 15:36
363 查看
Search in Rotated Sorted Array
题意:
Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
You are given a target value to search. If found in the array return its index, otherwise return -1.
主要分下面三种情况,看target在那那个位置:
其实这道题直接用for循环遍历一遍也可以,但考虑到使用二分法,则用如下:
代码1:
public class Solution { public int search(int[] A, int target) { int l = 0; int r = A.length - 1; while (l <= r) { int mid = (l + r) / 2; if (target == A[mid]) return mid; if (A[l] <= A[r]) { //one if (target < A[mid]) r = mid - 1; else l = mid + 1; } else if (A[l] <= A[mid]) { //two if (target > A[mid] || target < A[l]) l = mid + 1; else r = mid - 1; } else { //three if (target < A[mid] || target > A[r]) r = mid - 1; else l = mid + 1; } } return -1; } }
代码2:
public class Solution { public int search(int[] nums, int target) { int start = 0; int end = nums.length - 1; while (start <= end){ int mid = (start + end) / 2; if (nums[mid] == target) return mid; if (nums[start] <= nums[mid]){ if (target < nums[mid] && target >= nums[start]) end = mid - 1; else start = mid + 1; } if (nums[mid] <= nums[end]){ if (target > nums[mid] && target <= nums[end]) start = mid + 1; else end = mid - 1; } } return -1; } }
相关文章推荐
- 移动互联网时代的特征
- android.os.NetworkOnMainThreadException
- 查看oracle表空间
- Spring+Mybatis的整合(初步)
- 对应用软件:游戏-《上古卷轴5》的点评
- magento app开发遇到的问题及解决
- iOS开发网络篇—HTTP协议
- 余弦相似性计算
- Android的SharedPreferences保存,读取和删除数据
- LEETCODE 101
- ArrayList深拷贝的一种实现方法
- glassfish安装mysql数据库connector/J
- CSS3 常用属性总结
- jQuery的动画效果
- 格子中输出(改进版,可改变输出行数,列数)
- 1.Two Sum
- 蓝桥杯 算法训练 Lift and Throw
- <LeetCode OJ> 77. Combinations
- 面试小题1
- [LeetCode]题解(python):110-Balanced Binary Tree