美文网首页
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