Search Insert Position
- median
- tag: array, binary search
- similar:
找到插入target的位置使得保持有序性
思考
- 这题本身很简单. 最主要的问题是: 是否一直使用九章的模版?
- template还是重要的. 因为这本身就是避免了corner case.
idea 0:
- 一时头晕, 居然没用binary search而是O(n)的search.
idea 1:
- 我使用的binary search模版, 但是最后如何判断呢, 有点乱. 所以错了. 这里贴上正确的代码:
if (A == null || A.length == 0) {
return 0;
}
int start = 0, end = A.length - 1;
while (start + 1 < end) {
int mid = start + (end - start) / 2;
if (A[mid] == target) {
return mid;
} else if (A[mid] < target) {
start = mid;
} else {
end = mid;
}
}
// 我一开始这个地方头晕了. 上面的部分还是用的模版. 下面是重点部分. 这里是找到第一个比它大的数.
if (A[start] >= target) {
return start;
} else if (A[end] >= target) {
return end;
} else {
return end + 1;
}