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)

相关推荐
Fanxt_Ja42 分钟前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下43 分钟前
最终的信号类
开发语言·c++·算法
echoarts1 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix1 小时前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
大飞pkz1 小时前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
每天回答3个问题2 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说2 小时前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
元亓亓亓2 小时前
LeetCode热题100--105. 从前序与中序遍历序列构造二叉树--中等
算法·leetcode·职场和发展
小莞尔3 小时前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号3 小时前
Qt 中 OPC UA 通讯实战
开发语言·qt