Skip to content

Commit 58e68e2

Browse files
authored
Create find_the_missing_number_ii.py
1 parent 171cda5 commit 58e68e2

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

find_the_missing_number_ii.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# coding: utf-8
2+
3+
class Solution:
4+
# @param {int} n an integer
5+
# @param {string} str a string with number from 1-n
6+
# in random order and miss one number
7+
# @return {int} an integer
8+
def findMissing2(self, n, str):
9+
# Write your code here
10+
self.ret = 0
11+
self.done = False
12+
self.mark = [False] * (1 + n)
13+
self._search(0, n, str)
14+
return self.ret
15+
16+
def _search(self, i, n, str):
17+
if (i >= len(str)) or self.done:
18+
if not self.done:
19+
for i in xrange(1, n + 1):
20+
if not self.mark[i]:
21+
self.ret = i
22+
break
23+
self.done = True
24+
return
25+
s = int(str[i])
26+
if s == 0: # [1, n]
27+
return
28+
j = i
29+
while s <= n: # 不断尝试多取一位
30+
if not self.mark[s]:
31+
self.mark[s] = True
32+
self._search(j + 1, n, str)
33+
self.mark[s] = False
34+
j += 1
35+
if j >= len(str):
36+
break
37+
s = s * 10 + int(str[j])
38+
39+
# medium: http://www.lintcode.com/zh-cn/problem/find-the-missing-number-ii/

0 commit comments

Comments
 (0)