【发布时间】:2026-02-02 21:35:02
【问题描述】:
我有一个排序的数字列表,想要打印连续的数字范围,如果系列中缺少任何数字,我们将开始一个新的范围。 注意:有可能在系列中连续缺少多个数字。 示例:
Input:
list = {301, 302, 303, 304, 305, 307, 308, 310, 312, 318, 319, 322, 390}
Output: range
301 - 305 //306 is missing so it breaks and new range starts
307 - 308 //309 is missing so breaks
310 // 311 is missing so breaks
312 // 313, 314, 315, 316, 317 are missing break (1 or more number can be missed)
318 - 319
322
390
我的逻辑:
int count = list.get(0);
String output = list.get(0) + "-";
for(int n: list){
if(count++ != n){
output = output+(count-2);
System.out.println(output);
output = n+"-";
count++;
}
}
如果有超过 2 个数字,则失败。
【问题讨论】:
-
从您的陈述来看,什么代表一个范围以及您使用什么标准来确定要检查哪个数字是否属于一个范围并不明显。请通过给出示例基本案例以更具体的方式陈述您的问题。可能有很多数字不在范围内,如果要检查的数字由数字之间的单个数字间隙标识,那么请明确说明顺序是排序的,并且间隙由缺失的数字标识,说明可以缺失多少个数字.它们可能同时在不同的范围内丢失。你的问题陈述太模棱两可了。
-
感谢@dmitryro,已更新问题,如果仍有任何困惑,请告诉我。
标签: java arrays list algorithm data-structures