本帖最后由 longlangcx 于 2013-7-2 11:49 编辑
一句注释都没,看着真心蛋疼。
这个的题目需求似乎是这样的:
有8个数1,2,3,4,5,6,7,8围成一个圈,从1开始往后数,每数三个就把这个数踢出这个圈,然后继续数,直到剩下最后一个为止,有点类似于一个首尾相接的链表。
变量pos是用于存放当前数到的数的下标。第一个for嵌套的内层是用来数1,2,3,1,2,3这样数的,每数到3,就把这个对应的数标示为0。外侧循环设置为数组个数减1次,是因为数1次123就少一个数,一共8个,数7次123就只剩下最后一个数是幸存者了,所以这个数才叫lucknumber吧。数到数组结尾即pos = arr.length时,就让pos重新指向数组开始 pos = 0,当123123的3点到已经为0的数时就跳过不算。这样进行下去直到数组中只剩一个不为0的数时,结束上面的for嵌套。
然后后面的for循环就直接一个遍历,打印出不为零的数就欧了。
顺带一提,这个实现方式数的次数有点多,因为依然会点到已经为0的数,效率不高。其实考虑可以用一个类似链表的形式来实现,可以将其封装成对象,里面存储着前一个和后一个的信息,然后剔除一个数时就把这个数前一个数的尾信息记录为这个数后一个数,把这个数后一个数的头信息记录为前一个数,这个数就自然被跳过了。
不知道我表达清楚了没{:soso_e113:}
|