一、题目内容

image.png

二、题解

解法1:

思路

代码

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