题目地址

解题思路

根据示例,可以看出,如果区间中相邻的两个元素的差值大于1,那么就划分成2个区间。此外,根据题意,区间[a,b],如果a === b ,那么区间的值就直接是a。可以用一个值来存储区间的左侧区间,判断下一个值与当前值的差值是否大于1,如果大于1,判断当前的值是否与区间左侧的值相等,相等就直接插入左侧值,否则就插入类似于 a -> b 格式,然后 当前区间左侧的值为 nums[i]。代码如下:

代码

  1. var summaryRanges = function(nums) {
  2. const result = [];
  3. const len = nums.length;
  4. let s = nums[0];
  5. for(let i = 1;i<=len;i++){
  6. if(nums[i] - nums[i-1] == 1 ){
  7. continue;
  8. }else{
  9. if(nums[i-1] === s){
  10. result.push(`${s}`);
  11. }else{
  12. result.push(`${s}->${nums[i-1]}`);
  13. }
  14. s = nums[i]
  15. }
  16. }
  17. return result;
  18. };
  19. const nums = [0,1,2,4,5,7];
  20. console.log('--resylt--',summaryRanges(nums));