代码部分
依旧二分法,然后小心点写,题目差不多类似的,升序这道题目是非递减,二分…
我的思路,若找得到,先找到然后加加减减试探
认识报错:java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
数组越界……因为我high = nums.length-1
忘记减一了…
然后又错了,因为理应else {--high;}
我写了++…
class Solution {
public int[] searchRange(int[] nums, int target) {
int low = 0,high = nums.length-1;
int start,end;
while (low<=high) {
int mid = (low + high) / 2;
if (nums[mid] == target) {
start=mid;
end=mid;
while(start > 0 && nums[start - 1] == target){
--start;
}
while(end < nums.length-1 && nums[end + 1] == target){
++end;
}
return new int[]{start,end};
}
else if (nums[mid] < target) {
++low;
}
else {
--high;
}
}
return new int[]{-1,-1};
}
}
反思部分
反思1:markdown的格式搞得有问题,不过小事,才写了几题,改的方便。
反思2:++—搞错,得锤
反思3:关于本题,所需要的可以说是区间,我是用while循环和start与end俩变量去找,其实可以有别的方法,比如还是二分法,因为是非递减,所以通过<这样找到一个大致位置
然后接着往后探索…