给定一个 无重复元素 的 有序 整数数组 nums 。
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。
列表中的每个区间范围 [a,b] 应该按如下格式输出:
“a->b” ,如果 a != b
“a” ,如果 a == b
#include <iostream>
#include <vector>
#include <string>std::vector<std::string> findRange(const std::vector<int>& nums) {std::vector<std::string> ranges;if (nums.empty()) {return ranges;}int start = nums[0];int end = nums[0];for (int i = 1; i < nums.size(); ++i) {if (nums[i] == end + 1) {end = nums[i];} else {if (start == end) {ranges.push_back(std::to_string(start));} else {ranges.push_back(std::to_string(start) + "->" + std::to_string(end));}start = end = nums[i];}}if (start == end) {ranges.push_back(std::to_string(start));} else {ranges.push_back(std::to_string(start) + "->" + std::to_string(end));}return ranges;
}int main() {std::vector<int> nums = {1, 2, 3, 6, 7, 9};std::vector<std::string> result = findRange(nums);// Check and add the last range if anyif (!result.empty()) {std::cout << "The minimum ordered range list covering all numbers is: ";for (const auto& range : result) {std::cout << range << " ";}std::cout << std::endl;}return 0;
}