代码部分

1.png

依旧二分法,然后小心点写,题目差不多类似的,升序这道题目是非递减,二分…

我的思路,若找得到,先找到然后加加减减试探

认识报错:java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0数组越界……因为我high = nums.length-1忘记减一了…

然后又错了,因为理应else {--high;}我写了++…

  1. class Solution {
  2. public int[] searchRange(int[] nums, int target) {
  3. int low = 0,high = nums.length-1;
  4. int start,end;
  5. while (low<=high) {
  6. int mid = (low + high) / 2;
  7. if (nums[mid] == target) {
  8. start=mid;
  9. end=mid;
  10. while(start > 0 && nums[start - 1] == target){
  11. --start;
  12. }
  13. while(end < nums.length-1 && nums[end + 1] == target){
  14. ++end;
  15. }
  16. return new int[]{start,end};
  17. }
  18. else if (nums[mid] < target) {
  19. ++low;
  20. }
  21. else {
  22. --high;
  23. }
  24. }
  25. return new int[]{-1,-1};
  26. }
  27. }

反思部分

反思1:markdown的格式搞得有问题,不过小事,才写了几题,改的方便。
反思2:++—搞错,得锤
反思3:关于本题,所需要的可以说是区间,我是用while循环和start与end俩变量去找,其实可以有别的方法,比如还是二分法,因为是非递减,所以通过<这样找到一个大致位置
然后接着往后探索…