力扣链接:https://leetcode-cn.com/probl...
解题思路:
- 汇总区间这个题目跟之前一个输入排序区间的题目有点像。首次拿到这个题目,脑海中先想到的就是双指针的做法,先选定算法,再剖析细节
- 在抉择双指针之后,首先要确定遍历对象,那就是整个数组,通过循环来遍历整个数组
- 起始时双指针均位于数组的第一个元素,而后快指针开始遍历,直到找到第一个不间断递增的数字,而后再和慢指针的下标做比拟,如果此时快慢指针相等,那么阐明这个区间中只有一个数字,退出数组即可。如果快指针大于慢指针,那么插入区间
- 最初更新指针,快指针加一,慢指针等于快指针,开始下一轮循环直至完结
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}