一、题目内容

image.png

二、题解

解法1:

思路

二分

代码

  1. public class Solution {
  2. public int search (int[] nums, int target) {
  3. // write code here
  4. if (nums == null || nums.length < 1) {
  5. return -1;
  6. }
  7. if (nums.length == 1) {
  8. return nums[0] == target ? 0 : -1;
  9. }
  10. int left = 0,right = nums.length-1;
  11. while(left<=right){
  12. int mid = (left + right) >> 1;
  13. if (nums[mid] == target) {
  14. return mid;
  15. }
  16. //左侧升序
  17. if (nums[0] <= nums[mid]) {
  18. if (target >= nums[0] && target < nums[mid]) {
  19. right = mid - 1;
  20. }else{
  21. left = mid + 1;
  22. }
  23. }else{
  24. if (target > nums[mid] && target <= nums[right]) {
  25. left = mid + 1;
  26. } else {
  27. right = mid - 1;
  28. }
  29. }
  30. }
  31. return -1;
  32. }
  33. }