Leetcode链接/Missing Ranges
Problem: Missing Ranges
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"]
.
分析:
好不容易遇到一个简单的题目,真是不容易。直接上代码了,小心一点就不会出错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
public class { public List<String> findMissingRanges(int[] nums, int lower, int upper) { List<String> ret = new ArrayList<>(); if (upper < lower || nums == null) return ret; int length = nums.length; if (length == 0) { String temp = lower == upper?""+lower : lower + "->" + upper; ret.add(temp); return ret; } int i; for (i = 0; i < length; i++) { int cur = nums[i]; if (i == 0 && lower < cur) { if (cur - lower == 1) { ret.add(String.valueOf(lower)); } else { ret.add(lower + "->" + (cur - 1)); } } else if (i >= 1 && cur - nums[i-1] != 1) { int prev = nums[i-1]; if (cur - prev == 2) { ret.add(String.valueOf(prev + 1)); } else { ret.add((prev + 1) + "->" + (cur - 1)); } } } if (nums[nums.length - 1] < upper) { if (upper - nums[nums.length - 1] == 1) { ret.add(String.valueOf(upper)); } else { ret.add((nums[nums.length - 1] + 1) + "->" + upper); } } return ret; } }
|
近期评论