Missing Ranges

Given [0, 1, 3, 50, 75], lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].

  • Time: O(n)
  • Space: O(1)
public List<String> findMissingRanges(int[] a, int lo, int hi) {
    List<String> ret = new LinkedList<>();

    int next = lo;
    for (int i = 0; i < a.length; i++) {
        if (a[i] < next) {
            continue;
        } else if (a[i] == next) {
            next++;
        } else {
            ret.add(getRange(next, a[i] - 1));
            next = a[i] + 1;
        }
    }
    if (next <= hi) {
        ret.add(getRange(next, hi));
    }
    return ret;
}

private String getRange(int n1, int n2) {
    return n1 == n2 ? String.valueOf(n1) : n1 + "->" + n2;
}

results matching ""

    No results matching ""