美文网首页
34. Find First and Last Position

34. Find First and Last Position

作者: xxxcoder | 来源:发表于2020-07-26 11:58 被阅读0次

    key tips

    首先找到与目标元素相等的index,再通过二分法调整左右下标

    algo1

    由i,j表示要查找的子数组起止下标,记m =i + (j-i)/2。
    首先通过二分查找法确定target是否存在于[i, j],

    while(i < j) {
      m = i + (j-i)/2;
      if (a[m] == target) {
        break;
      }
      if (a[n] > target) {
        j = m -1;
      } else {
        i = m + 1;
      }
    }
    

    确定target是否存在以及m后,通过二分查找法调整左右边界

    while(a[i] < a[m]) {
      int mid = i + (m-i)/2;
      if (a[mid] < a[m]) {
        i = mid+1;
      }else {
        i++;
      }
    }
    

    相关文章

      网友评论

          本文标题:34. Find First and Last Position

          本文链接:https://www.haomeiwen.com/subject/rqswlktx.html