周末趁有空,把某个程序的一个小算法问题解决了。
问题
有一组无序数字(整形,int),如何找出至少连续3个小于等于12的数字出来?
例如:1,2,3,11,12,13,4,5,6,7,14,15,16,17,8,9,10,18,19,20
输出:1,2,3;4,5,6,7;8,9,10(这里的“;”仅作区别几组输出结果显示之用)
因为周五太累了,本想一个简单的问题,发在群上等人解决了明天直接copy来用,不曾想反应冷淡。。。。
周六和周日用了一些时间去解决这个问题,包括精简代码。
在此感谢群里一位10的师弟,这个代码一定程度上参考了他的思想:
代码如下:
感想:问题虽然很简单,但思考过程还是有点意思的。但我只知道这段代码在java里可运行,其他语言没测试过。
个人觉得这段代码的特别之处就在于第5行和第9行的或运算上,假如把第5行或第9行各自的或运算条件调换的话,估计就要出问题了。java的或运算是这样的:a || b,如果条件a为true,则不需要判断条件b是否为true;同样,a && b,如果条件a为false,也不需要判断条件b。(不知道其他语言是否也是这样定义)
当然,这个问题或许还可以用递归思想解决,但个人对递归思想没什么好感,也不熟,所以就没从这方面入手了。