![]() |
1
14
如果数组按升序排序,那么问题就容易了。定义一个
|
![]() |
2
3
这里有一个C#3.0'y的方法: 关注点:
-
干杯,大卫 |
![]() |
3
2
这是一个python实现,应该很容易理解
我知道,我知道,这不是 算法 ,但我发现在没有缩进问题的情况下真正解释它比仅仅实现一个解决方案要困难得多。 |
![]() |
4
2
第一:分类 然后:打印第一个值并循环后续值。如果“当前”值等于最后一个值+1,则跳过它。否则,如果跳过了值打印破折号和值,则打印逗号并重复。 这样就可以了。除非你想让我帮你写作业?:) |
![]() |
5
2
如果数组已排序(如您的示例所示),我将定义包含最小值和最大值的存储桶。 初始化:创建一个最小值和最大值分别等于第一个值的bucket。 循环:将每个值与当前桶的最大值进行比较。如果它等于或大于当前最大值1,则更新最大值。如果它大于最大值1,则将存储桶保存到存储桶列表中,并启动新的存储桶。 最后,您将有一组桶,每个桶中有一个最小值和一个最大值。如果最小值与最大值相同,则打印一个数字(即:在您的示例中,第一个存储桶的最小值和最大值分别为1)。如果它们不同,请按范围打印。 lisp中的示例实现:
基本上你会得到一个清单,每个东西都有(最低的在桶里,最高的在桶里)。这些是你的范围。 如果列表尚未排序,请先对其排序。 |
![]() |
6
1
C(gcc)它类似于 the Python's version
例子:
输出:
|
![]() |
7
0
假设列表是有序的,你可以从末尾开始,然后继续减去下一个。当差值为1时,您处于一个范围内。如果不是,你就开始一个新的范围。 即
15-14 = 1
|
![]() |
8
0
|
![]() |
9
0
这是我的Perl解决方案。可以更干净更快,但它显示了它的工作原理:
|
![]() |
10
0
我在Java 1.5中的解决方案是:
哪些产出:
格里茨,加德 |
![]() |
11
0
我相信在1.5版本中引入Subversion的mergeinfo属性的格式与您所要求的格式相同,因此您可以查看Subversion的源代码,以了解他们是如何做到这一点的。如果它与已经发布在这里的其他建议有什么不同,我会感到惊讶。 |
![]() |
12
0
我将假定数组X()是预排序的(如果不是,则先对数组进行排序)。 for each element of X() as $element (with $i as current array posistion) add $element to end of array Y() if (X($i) + 1 is less than X($i + 1)) AND ($i + 1 is not greater than sizeof(X())) then append Y(1)."-".Y(sizeof(Y())) to end of Z() unset Y() end if next if anything remains in Y() append to end of Z() 好吧,我会这样做的。 |
![]() |
13
0
|
![]() |
14
0
这是我在哈斯克尔最好的机会。 |
![]() |
15
0
|
![]() |
16
0
Python(>=2.6)此版本还处理重复和未排序的序列。
输出:
|
![]() |
Thinkpad · Excel引用基于字符串的范围 2 年前 |
![]() |
tanmay · 如何检查列表中的元素是否具有重叠的数值 2 年前 |
![]() |
Spd · vba中的范围变量不接受基于指针的值 6 年前 |
![]() |
Mahhdy · VBA-使用RefEdit复制工作簿之间的范围 7 年前 |
![]() |
AlisaM · 是否可以使用不带数值的范围滑块,而是显示内容? 7 年前 |
![]() |
Jan Wytze · postgresql 10日期范围限制 7 年前 |