Missing Ranges
题目地址:
https://leetcode.com/problems/missing-ranges/#/description
题目:
解题思路:
这道题需要先了解如何构成最基本的range。并且在这之前和之后需要先handle一些corner case。
代码:
https://leetcode.com/problems/missing-ranges/#/description
题目:
Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], 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"].解题思路:
这道题需要先了解如何构成最基本的range。并且在这之前和之后需要先handle一些corner case。
代码:
private String outputRange(int n, int m) { return (n == m)?String.valueOf(n) : n + "->" + m; } public List<String> findMissingRanges(int[] nums, int lower, int upper) { List<String> ranges = new ArrayList<String>(); if (nums.length == 0) { //Empty array misses the range lower->upper. ranges.add(outputRange(lower, upper)); return ranges; } int prev; long temp1 = (long)nums[0] - (long)lower; if (temp1 > 0) { //Handles lower boundary. Notice "inclusive". ranges.add(outputRange(lower, nums[0] - 1)); prev = nums[0]; } else { prev = lower; } for (int cur : nums) { long temp2 = (long)cur - (long)prev; if (temp2 > 1) { ranges.add(outputRange(prev + 1, cur - 1)); //Misses range if distance > 1. } prev = cur; } long temp3 = (long)upper - (long)prev; if (temp3 > 0) { //Handles the upper boundary. ranges.add(outputRange(prev + 1, upper)); } return ranges; }

Comments
Post a Comment