Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing ranges.
For example, given [0, 1, 3, 50, 75], return [“2”, “4->49”, “51->74”, “76->99”]
[TIPS] 1.特殊情况向面试官确认,数组为空或者包含全部元素返回什么
2. 注意可扩展性,题意为[0,99],扩展为[start, end]
3 findMissingRanges2方法未在online上跑过,简单自测, findMissingRanges转载自链接以备忘,
优点在于无需额外处理特殊情形
public List<String> findMissingRanges2(int[] vals, int start, int end) { List<String> ranges = new ArrayList<String>(); if (vals == null || vals.length == 0) { ranges.add(start + "->" + end); return ranges; } // int need = 0; // 如果start != 0 就错了 int need = start; for (int i = 0; i < vals.length; i++) { if (vals[i] > need) { ranges.add(getRange(need, vals[i] - 1)); } need = vals[i] + 1; } if (need <= end) ranges.add(getRange(need, end)); return ranges; } // 转载:http://www.danielbit.com/blog/puzzle/leetcode/leetcode-missing-ranges public List<String> findMissingRanges(int[] vals, int start, int end) { List<String> ranges = new ArrayList<String>(); if (vals == null || vals.length == 0) { ranges.add(start + "->" + end); return ranges; } int prev = start - 1; for (int i = 0; i <= vals.length; i++) { int curr = (i == vals.length) ? end + 1 : vals[i]; if (curr - prev >= 2) { ranges.add(getRange(prev + 1, curr - 1)); } prev = curr; } return ranges; } private String getRange(int from, int to) { return (from == to) ? String.valueOf(from) : from + "->" + to; }
相关推荐
- Search for a Range: 给定一个按照升序排列的数组,和一个目标值,确定该目标值在数组中的开始位置和结束位置。 - Search Insert Position: 在一个排序数组中查找一个目标值,如果不存在则返回应该插入的位置。 - ...
- **数组中的第一个不重复的数字(First Missing Positive)**: 找出数组中缺失的第一个正数。 #### 排序算法 - **合并排序数组(Merge Sorted Array)**: 将两个排序数组合并成一个新的排序数组。 - **寻找数组中的中...
股票买卖最佳时机leetcode 结帐解决方案分支解决方案。 话题 问题 地位 数组 1: Add_one_to_number C++ :check_mark_button: Java Python 解释。 2: Beggars_outside_temple C++ Java Python 解释。 3: Bob_and_...
201 | [Bitwise AND of Numbers Range](https://leetcode.com/problems/bitwise-and-of-numbers-range/) | [C++](./C++/bitwise-and-of-numbers-range.cpp) [Python](./Python/bitwise-and-of-numbers-range.py) | _...
- **Search for a Range**:在一个排序数组中查找目标值的第一个和最后一个位置。 - **Search Insert Position**:在排序数组中查找目标值的插入位置。 2. **位操作(Bit Manipulation)**: - **Missing Number...
- First Missing Positive(缺失的第一个正数) - 2 Sum(两数之和) - 3 Sum(三数之和) - 3 Sum Closest(三数之和最接近) - Remove Duplicates from Sorted Array(删除有序数组中的重复项) - Remove ...
range [0, n], return the only number in the rangethat is missing from the array. Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity? 问题 2:-...
- **缺失数字(Missing Number)**: 给定一个包含[0, n]范围内所有数字的数组`nums`,但缺少了一个数字,找到这个缺失的数字。 - **判断2的幂(Power of Two)**: 判断一个给定的正整数是否为2的幂。 - **计算1的位数...
- First Missing Positive:找出最小的正整数,它在数组中未出现。 - Kth Largest Element in an Array:在未排序的数组中找到第k大的元素。 - Binary Search:二分查找法。 - First Position of Target:在有序数组...