Missing Ranges https://leetcode.com/problems/missing-ranges/
- Visualize the summary on the number line. Then visualize lower and upper wrapped around it.
- Use a variable called next_expected and initialize to lower.
- Iterate through nums. If x is same as next_expected, increment next_expected by 1. Otherwise you have discovered a missing range as next_expected to x-1. The new next_expected will be x + 1.
- Be careful about the final range involving upper.
- Also notice that add_range method and the use of s < e.
class Solution(object): def add_range(self, nums, s, e, result): if s == e: result.append(str(s)) elif s < e: # Important result.append(str(s) + "->" + str(e)) return def findMissingRanges(self, nums, lower, upper): """ :type nums: List[int] :type lower: int :type upper: int :rtype: List[str] """ result =  next_expected = lower for x in nums: if x == next_expected: next_expected = next_expected + 1 # Important continue else: s,e = next_expected, x-1 self.add_range(nums, s, e, result) next_expected = x + 1 self.add_range(nums, next_expected, upper, result) return result