关于golang:Leetcode专题数组228汇总区间

34次阅读

共计 598 个字符,预计需要花费 2 分钟才能阅读完成。

力扣链接:https://leetcode-cn.com/probl…
解题思路:

  1. 汇总区间这个题目跟之前一个输入排序区间的题目有点像。首次拿到这个题目,脑海中先想到的就是双指针的做法,先选定算法,再剖析细节
  2. 在抉择双指针之后,首先要确定遍历对象,那就是整个数组,通过循环来遍历整个数组
  3. 起始时双指针均位于数组的第一个元素,而后快指针开始遍历,直到找到第一个不间断递增的数字,而后再和慢指针的下标做比拟,如果此时快慢指针相等,那么阐明这个区间中只有一个数字,退出数组即可。如果快指针大于慢指针,那么插入区间
  4. 最初更新指针,快指针加一,慢指针等于快指针,开始下一轮循环直至完结
func Summary(nums []int) []string {n := len(nums)
    if n == 0 {return []string{}}
    low, high := 0, 0
    ans := []string{}
    for high < n {for high < n-1 && nums[high]+1 == nums[high+1] {high++}
        if low == high {ans = append(ans, strconv.Itoa(nums[low]))
        } else if low < high {ans = append(ans, strconv.Itoa(nums[low])+"->"+strconv.Itoa(nums[high]))
        }
        high++
        low = high
    }
    return ans
}

正文完
 0