C# 汇总区间

228 汇总区间

给定一个 无重复元素 的 有序 整数数组 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" 提示: 0 \<= nums.length \<= 20 -231 \<= nums\[i\] \<= 231 - 1 nums 中的所有值都 互不相同 nums 按升序排列 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/summary-ranges # 解决方案: ## 提供思路 ## 当我在提交代码的时候,程序报错了,仔细一看,发现nums是一个空数组。另外还有一种特殊情况,就是数组只有一个数字的时候,这样子就直接输出就好了。解题时最主要的步骤是判断当前数字是否为数组的下一项数字的前一位,满足了就继续,不满足就输出已满足的最大项。 ## 上代码: ```csharp public class Solution { public IList SummaryRanges(int[] nums) { List list = new List(); if (nums.Length == 0) { return list; } else if (nums.Length == 1) { list.Add(nums[0].ToString()); return list; } int start = nums[0]; int cache = nums[0]; bool CanContinue = false; for (int i = 0; i < nums.Length; i++) { if (i == 0) { if (nums[i + 1] != nums[i] + 1) { list.Add(nums[i].ToString()); } continue; } int num = nums[i]; if (num - cache == 1) { cache = num; CanContinue = true; if (nums.Length == i + 1) { list.Add(start.ToString() + "->" + cache.ToString()); } } else { if (CanContinue) { list.Add(start.ToString() + "->" + cache.ToString()); CanContinue = false; } start = num; cache = num; if ((nums.Length > i + 1 && nums[i + 1] != nums[i] + 1) || (nums.Length == i + 1)) { list.Add(nums[i].ToString()); } } } return list; } } ``` ## 个人感悟:开始不知所云,说人话就是,123这种连在一起的就输入 1---\>3,如果不连续了,1,3这种就直接输出1,3。是不是就没那么闹心了?然后考虑下空数组。 以上是碰到的第二百二十八题,后续持续更新。感觉对你有帮助的小伙伴可以帮忙点个赞噢! ![在这里插入图片描述](https://file.jishuzhan.net/article/1685530017464848385/1a72ec08241941939d6aeb9cca39814e.jpeg)

相关推荐
Gavin_9157 分钟前
一文速通Ruby语法
开发语言·ruby
搞一搞汽车电子18 分钟前
vs studio 2017项目不支持studio vs2022
开发语言
witkey_ak989635 分钟前
python 可迭代对象相关知识点
开发语言·python
呼啦啦啦啦啦啦啦啦1 小时前
synchronized锁,ReentrantLock 锁
开发语言·
听风的码2 小时前
Vue2封装Axios
开发语言·前端·javascript·vue.js
素界UI设计3 小时前
建筑行业变革:用Three.js构建BIM数据可视化孪生平台
开发语言·javascript·信息可视化
快去睡觉~3 小时前
力扣48:旋转矩阵
算法·leetcode·矩阵
王廷胡_白嫖帝3 小时前
Qt个人通讯录项目开发教程 - 从零开始构建联系人管理系统
开发语言·qt
卡洛斯(编程版4 小时前
(1) 哈希表全思路-20天刷完Leetcode Hot 100计划
python·算法·leetcode
疯狂的代M夫4 小时前
C++对象的内存布局
开发语言·c++