Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.
For example, given
[0, 1, 3, 50, 75]
, lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].
public class Solution { public List<String> findMissingRanges(int[] nums, int lower, int upper) { List<String> res = new ArrayList<String>(); if (nums.length == 0) { res.add(helper(lower, upper)); return res; } if (nums[0] > lower) { res.add(helper(lower, nums[0] - 1)); } for (int i = 1; i < nums.length; i++) { if (nums[i] - nums[i - 1] > 1) { res.add(helper(nums[i - 1] + 1, nums[i] - 1)); } } if (nums[nums.length - 1] < upper) { res.add(helper(nums[nums.length - 1] + 1, upper)); } return res; } public String helper(int lower, int upper) { if (lower == upper) { return lower + ""; } else { return lower + "->" + upper; } } }
没有评论:
发表评论