39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
/**
|
||
* https://leetcode.cn/problems/summary-ranges/?envType=study-plan-v2&envId=top-interview-150
|
||
* @param {number[]} nums
|
||
* @return {string[]}
|
||
*/
|
||
const summaryRanges = function (nums) {
|
||
|
||
};
|
||
|
||
/*
|
||
思路:定义两个指针,一个指针表示区间的开头,一个表示区间的结尾,用left和right表示,right扫描连续区间,如果发现不
|
||
再连续就把left和right表示的连续区间加入到结果集
|
||
*/
|
||
function f1(nums) {
|
||
const result = [];
|
||
let left = 0;
|
||
|
||
while (left < nums.length) {
|
||
let right = left;
|
||
// 扫描连续区间
|
||
while (right + 1 < nums.length && nums[right + 1] === nums[right] + 1) {
|
||
right++;
|
||
}
|
||
|
||
// 查看left和right是否相等,如果相等则这个区间只有一个数,否则是一个完整的区间,需要用left->right表示
|
||
|
||
if (left === right) {
|
||
result.push(`${nums[left]}`);
|
||
} else {
|
||
result.push(`${nums[left]}->${nums[right]}`);
|
||
}
|
||
|
||
// 区间统计完毕,统计下一个区间
|
||
|
||
left = right + 1;
|
||
}
|
||
return result;
|
||
}
|