从1-100中隔5个数去掉一个数,最后去掉的哪个数(如果数过一遍了从前端接着开始)?
从1-100中隔5个数去掉一个数,最后去掉的哪个数(如果数过一遍了从前端接着开始),例如数是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
先去掉5,10,15........
最先想到的是使用循环链表,思路很简单。。。
这里使用python中的deque来解决:
每次把4个数放到队尾,从头弹出一个数,100次即可。代码如下(python版):
from collections import deque list100 = [i for i in range(1,101)] print list100 deque100 = deque(list100) dequefinaly = deque() for i in range(1,101): deque100.rotate(-4) one = deque100.popleft() dequefinaly.append(one) print i,':', one print dequefinaly
10行代码解决问题,python实在是太节省代码了
结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
1 : 5
2 : 10
3 : 15
4 : 20
5 : 25
6 : 30
7 : 35
8 : 40
9 : 45
10 : 50
11 : 55
12 : 60
13 : 65
14 : 70
15 : 75
16 : 80
17 : 85
18 : 90
19 : 95
20 : 100
21 : 6
22 : 12
23 : 18
24 : 24
25 : 31
26 : 37
27 : 43
28 : 49
29 : 56
30 : 62
31 : 68
32 : 74
33 : 81
34 : 87
35 : 93
36 : 99
37 : 7
38 : 14
39 : 22
40 : 29
41 : 38
42 : 46
43 : 53
44 : 61
45 : 69
46 : 77
47 : 84
48 : 92
49 : 1
50 : 9
51 : 19
52 : 28
53 : 39
54 : 48
55 : 58
56 : 67
57 : 78
58 : 88
59 : 97
60 : 8
61 : 21
62 : 33
63 : 44
64 : 57
65 : 71
66 : 82
67 : 94
68 : 4
69 : 23
70 : 36
71 : 52
72 : 66
73 : 83
74 : 98
75 : 16
76 : 34
77 : 54
78 : 73
79 : 91
80 : 13
81 : 41
82 : 63
83 : 86
84 : 11
85 : 42
86 : 72
87 : 2
88 : 32
89 : 76
90 : 17
91 : 59
92 : 3
93 : 64
94 : 27
95 : 96
96 : 89
97 : 26
98 : 51
99 : 79
100 : 47
deque([5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 6, 12, 18, 24, 31, 37, 43, 49, 56, 62, 68, 74, 81, 87, 93, 99, 7, 14, 22, 29, 38, 46, 53, 61, 69, 77, 84, 92, 1, 9, 19, 28, 39, 48, 58, 67, 78, 88, 97, 8, 21, 33, 44, 57, 71, 82, 94, 4, 23, 36, 52, 66, 83, 98, 16, 34, 54, 73, 91, 13, 41, 63, 86, 11, 42, 72, 2, 32, 76, 17, 59, 3, 64, 27, 96, 89, 26, 51, 79, 47])