D*******r 发帖数: 2323 | 1 它的解法是在头尾两端各加一个lower - 1和upper + 1的element,以此来简化edge
cases的处理。
public List findMissingRanges( int[] vals, int start, int end) {
List ranges = new ArrayList<>();
int prev = start - 1;
for (int i = 0; i <= vals.length; i++) {
int curr = (i == vals.length) ? end + 1 : vals[i];
if (curr - prev >= 2) {
ranges.add(getRange(prev + 1, curr - 1));
}
prev = curr;
}
return ranges;
}
private String getRange( int from, int to) {
return (from == to) ? String.valueOf(from) : from + "->" + to;
} | D*******r 发帖数: 2323 | 2 貌似这段code没有handle array中的element在[lower, upper]range之外的情况吧?
【在 D*******r 的大作中提到】 : 它的解法是在头尾两端各加一个lower - 1和upper + 1的element,以此来简化edge : cases的处理。 : public List findMissingRanges( int[] vals, int start, int end) { : List ranges = new ArrayList<>(); : int prev = start - 1; : for (int i = 0; i <= vals.length; i++) { : int curr = (i == vals.length) ? end + 1 : vals[i]; : if (curr - prev >= 2) { : ranges.add(getRange(prev + 1, curr - 1)); : }
| x***7 发帖数: 11 | | b******g 发帖数: 3616 | 4 这里应该是默认输入参数是valid的,也就是输入数组的所有元素都在lower - upper之
间。一般面试的时候可以问面试官是否要handle invalid input argument
【在 D*******r 的大作中提到】 : 貌似这段code没有handle array中的element在[lower, upper]range之外的情况吧?
|
|