其实就是查找一个数组确实的数字,这个数字怎么查找嗯?通过**nums[index]+1==nums[index+1]**去进行查找,这样最终会同得到确实的数字,然后确定一个区间,找出区间的两头数字即可。如果该区间的长度是1的话,那么就直接输出单个数字即可。
class Solution:
def summaryRanges(self, nums: List[int]) -> List[str]:
res = []
if not nums:
return []
if len(nums)==1:
return [str(nums[0])]
n = len(nums)
# 初始化双指针均指向数组头部
left = 0
right = 0
ans = []
# 开始遍历
while right < n:
# 数组有序
# 先限定边界,查找间隔大于 1 的部分
while right < n - 1 and nums[right] + 1 == nums[right+1]:
right += 1
# 找到间隔之后,将前面连续部分按照规定格式添加到结果列表中
if nums[left] != nums[right]:
ans.append(str(nums[left])+'->'+str(nums[right]))
else:
ans.append(str(nums[left]))
# 维护更新 right 和 left
right += 1
left = right
return ans
总结:处理字符串的时候一般都使用双指针进行操作。