您的位置:首页 > 文旅 > 美景 > leetcode:汇总区间

leetcode:汇总区间

2024/10/6 16:03:32 来源:https://blog.csdn.net/SzyPy/article/details/140926933  浏览:    关键词:leetcode:汇总区间

 题目:     

        给定一个无重复元素有序整数数组nums。返回恰好覆盖数组中所有数字最小有序区间范围列表 。也就是说,nums的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于nums的数字X。列表中的每个区间范围[a,b]应该按如下格式输出:

  • "a->b",如果a != b
  • "a",如果a == b

示例 :

输入

输出

解释
nums = [0,1,2,4,5,7]
["0->2","4->5","7"]
区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

提示:

  • 0<=nums.length<=20
  • -2^{31}<=nums[i]<=2^{31}-1
  • nums按升序排列
  • nums中的所有值都互不相同

相关标签:数组

题解:

        我们从数组的位置0出发,向右遍历。每次遇到相邻元素之间的差值等于1时,记录数据至临时列表,当差值不等于1时,我们就找到了一个区间。遍历完数组之后,就能得到一系列的区间的列表。[['0'], ['2', '3', '4'], ['6'], ['8', '9']]

        之后在遍历大列表,修改输出效果:['0', '2->4', '6', '8->9']

代码:Python

nums = [0, 2, 3, 4, 6, 8, 9]def leetcode():if nums == []:return numsres, ans, j = list(), list(), nums[0]for i in nums:if i == j:ans.append(str(i))else:res.append(ans)ans = [str(i)]j = i + 1res.append(ans)print(res)  # [['0'], ['2', '3', '4'], ['6'], ['8', '9']]for i in range(len(res)):if res[i][0] == res[i][-1]:res[i] = res[i][0]else:res[i] = res[i][0] + '->' + res[i][-1]return resif __name__ == '__main__':res = leetcode()print(res)  # ['0', '2->4', '6', '8->9']

总结:

题目内容来源于leetcode链接:汇总区间

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com