当前位置: 首页 > news >正文

成都双语网站开发/汕头网站建设平台

成都双语网站开发,汕头网站建设平台,wordpress gbk,企业网站的技术维护内容主要包括1. 问题描述: 给定一个无重复元素的有序整数数组 nums 。返回恰好覆盖数组中所有数字的最小有序区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 …

1. 问题描述:

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

示例 1:

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

示例 2:

输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

示例 3:

输入:nums = []
输出:[]

示例 4:

输入:nums = [-1]
输出:["-1"]

示例 5:

输入:nums = [0]
输出:["0"]

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/summary-ranges

2. 思路分析:

① 首先需要读懂题目的意思,其实就是求解若干个连续数字的区间的起点与终点,观察题目的测试用例即可理解题目的意思,所以我们在循环中进行模拟通过判断相邻两个元素的差值是否是1来判断是否连续,需要使用一个pre变量来记录区间的起点,这样当发现相邻两个元素的差值不等于1的时候那么就需要往结果集中加入上一个的区间起点与终点对应的字符串,终点就为遍历元素的上一个元素,因为是是判断当前遍历元素与上一个元素的差值所以在循环结束之后需要额外处理最后一个元素,将结果加入到结果集中,其实就是模拟整个过程,注意其中的细节处理即可。

② 除了上面模拟求解的思路之外,我们还可以发现这道题目其实是一个双指针算法问题,可以定义两个指针l, r,判断相邻的两个元素是否相等,如果相等则r往右移否则就需要将两个指针对应范围的字符串加入到结果中,并且更新当前l,r指针为当前的nums[i],循环结束需要根据nums列表倒数两个元素的差值是否为1来添加最后的答案。

3. 代码如下:

from typing import Listclass Solution:def summaryRanges(self, nums: List[int]) -> List[str]:if not nums: return []if len(nums) == 1: return [str(nums[0])]i = 1res, pre = list(), nums[0]while i < len(nums):# 不等于1的时候进行合并上一个区间if nums[i] - nums[i - 1] != 1:if pre != nums[i - 1]:# 一个区间res.append(str(pre) + "->" + str(nums[i - 1]))else:# 只有一个元素res.append(str(pre))pre = nums[i]i += 1# 处理最后一个元素, 如果相邻元素不相等那么把最后一个元素加入到结果集中, 如果相等那么需要将区间起始点加入到结果集中if len(nums) >= 2 and nums[-1] - nums[-2] != 1:res.append(str(nums[-1]))# [-1]表示倒数第一个元素, [-1]表示倒数第二个元素,以此类推elif len(nums) >= 2 and nums[-1] - nums[-2] == 1:res.append(str(pre) + "->" + str(nums[-1]))return res

双指针:

from typing import Listclass Solution:# 双指针算法def summaryRanges(self, nums: List[int]) -> List[str]:if not nums: return list()elif len(nums) == 1: return [str(nums[0])]l, r = nums[0], nums[0]res = list()for i in range(1, len(nums)):if nums[i] != nums[i - 1] + 1:if l == r:res.append(str(l))else:res.append(str(l) + "->" + str(r))l = r = nums[i]else:r += 1# 处理nums最后一个区间if nums[i] == nums[i - 1] + 1:res.append(str(l) + "->" + str(r))else:res.append(str(nums[-1]))return res

python的第二种写法(固定左边位置然后移动右指针):

from typing import Listclass Solution:def summaryRanges(self, nums: List[int]) -> List[str]:res = list()i = 0while i < len(nums):j = i + 1while j < len(nums) and nums[j] == nums[j - 1] + 1:j += 1# 满足下面的条件说明相邻的两个数字就不相等了if j == i + 1: res.append(str(nums[i]))else: res.append(str(nums[i]) + "->" + str(nums[j - 1]))i = jreturn res

http://www.lbrq.cn/news/1394101.html

相关文章:

  • 门户网站 营销/最近国际新闻大事20条
  • 如何制作一个软件/赣州seo外包
  • 河南网站建设公司哪个好呀/北京aso优化
  • 印后设备网站建设/整站seo优化哪家好
  • wordpress链接翻译/优化网站怎么真实点击
  • 公司网站建设方案书/活动软文怎么写
  • 山东省青州市建设局网站/登封网站关键词优化软件
  • 做网站在哪里买空间域名/子域名查询工具
  • 如何整理网站/网页生成app
  • 青海高端网站建设价格/南京seo推广公司
  • 网站开发工程师课程/竞价托管哪家公司好
  • 网络工程师职业分析/搜索引擎优化的简写是
  • 网站建设维护 知乎/最近七天的新闻大事
  • 北京电商平台网站建设/2023b站推广大全
  • 广西壮锦网站建设策划书/关键词优化的作用
  • 网站的定位/友情链接的形式
  • 莞城东莞网站建设/网站设计方案
  • 青岛的网站建设公司哪家好/企业seo外包公司
  • 做网站需要哪些费用支出/广州网络推广外包平台
  • 中山医疗网站建设/海外广告优化师
  • 哈尔滨专业官网建站企业/网络推广比较经典和常用的方法有
  • 调用wordpress编辑器/seo推广软件品牌
  • 苹果电脑做网站好用吗/网站推广的10种方法
  • 品牌型网站制作价格/代刷网站推广链接0元价格
  • 大气网站建设/苏州整站优化
  • 提供网站推广公司电话/网站免费网站免费优化优化
  • 网站集约化建设纪要/合肥网站快速排名提升
  • wordpress分类信息模板/引擎seo优
  • 域名跳转网站/进入百度官网首页
  • 字体设计素材网/无锡网站建设方案优化
  • Flink双流join
  • Model Context Protocol (MCP) - 尝试创建和使用一下MCP Client
  • 车载软件架构 --- 赢得汽车软件开发竞赛
  • c语言多任务处理(并发程序设计)
  • Feign - 降级选 fallback 还是 fallbackFactory
  • 从一个ctf题中学到的多种php disable_functions bypass 姿势