Advertisement
lifeiteng

163. Missing Ranges

Sep 12th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.16 KB | None | 0 0
  1. //非常恶心的一道题。。 错了好多次
  2. class Solution {
  3.     public List<String> findMissingRanges(int[] nums, int lower, int upper) {
  4.         List<String> list = new ArrayList<>();
  5.         int n = nums.length;
  6.         if(n < 1)
  7.         {
  8.             // from lower to upper range -> inclusive are not covered
  9.             String str = toStr(lower, upper);
  10.             if(str != null) list.add(str);
  11.             return list;
  12.         }
  13.         if(lower < nums[0])
  14.         {
  15.             String str = toStr(lower, nums[0] - 1);
  16.             if(str != null) list.add(str);
  17.         }
  18.         for(int i = 0; i < n - 1; i++)
  19.         {
  20.             int a = nums[i], b = nums[i + 1];
  21.             if(a == b || a + 1 >= b) continue;
  22.             String str = toStr(a + 1, b - 1);
  23.             if(str != null) list.add(str);
  24.         }
  25.         if(nums[n - 1] < upper)
  26.         {
  27.             String str = toStr(nums[n - 1] + 1, upper);
  28.             if(str != null) list.add(str);
  29.         }
  30.         return list;
  31.     }
  32.    
  33.     String toStr(int a, int b)
  34.     {
  35.         if(a > b) return null;
  36.         if(a == b) return "" + a;
  37.         return "" + a + "->" + b;
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement