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)

相关推荐
吕司25 分钟前
Qt的信号与槽
开发语言·qt
bjxiaxueliang1 小时前
一文掌握C/C++命名规范:风格、规则与实践详解
c语言·开发语言·c++
玄〤1 小时前
Java 大数据量输入输出优化方案详解:从 Scanner 到手写快读(含漫画解析)
java·开发语言·笔记·算法
一起养小猫2 小时前
Flutter for OpenHarmony 实战:番茄钟应用完整开发指南
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
独自破碎E2 小时前
总持续时间可被 60 整除的歌曲
java·开发语言
senijusene2 小时前
数据结构与算法:队列与树形结构详细总结
开发语言·数据结构·算法
好好沉淀2 小时前
Elasticsearch 中获取返回匹配记录总数
开发语言·elasticsearch
2301_765703142 小时前
C++与自动驾驶系统
开发语言·c++·算法
Ll13045252982 小时前
Leetcode二叉树 part1
b树·算法·leetcode
MediaTea2 小时前
<span class=“js_title_inner“>Python:实例对象</span>
开发语言·前端·javascript·python·ecmascript