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)

相关推荐
LawrenceLan4 小时前
Flutter 零基础入门(十一):空安全(Null Safety)基础
开发语言·flutter·dart
txinyu的博客4 小时前
解析业务层的key冲突问题
开发语言·c++·分布式
码不停蹄Zzz4 小时前
C语言第1章
c语言·开发语言
行者965 小时前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
阿蒙Amon5 小时前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
SmartRadio5 小时前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
且去填词5 小时前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派6 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
yeziyfx6 小时前
kotlin中 ?:的用法
android·开发语言·kotlin
charlie1145141917 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式