From 641f712a20f48d8da77a9d8bc88c20b67f70b35a Mon Sep 17 00:00:00 2001 From: mhrooz Date: Sun, 2 Jun 2024 21:23:00 +0200 Subject: [PATCH] pass 211 77 433 --- .DS_Store | Bin 14340 -> 18436 bytes 130-240602-pass/main.py | 63 +++++++++++++++++++++++++++++++++++ 211-240602-pass/main.py | 71 ++++++++++++++++++++++++++++++++++++++++ 77-240602-pass/main.py | 13 ++++++++ 4 files changed, 147 insertions(+) create mode 100644 130-240602-pass/main.py create mode 100644 211-240602-pass/main.py create mode 100644 77-240602-pass/main.py diff --git a/.DS_Store b/.DS_Store index 706582588aded91b4b26d1970d9c6172a9366dac..bcb73a09e063b5c5bbb743b8d3c57139b7cd7581 100644 GIT binary patch literal 18436 zcmeI3dx#ZP9LLXn?A@oktFaV>c>|#qvhH;s?rxM5w>aLmLx@%q|GHN5x zVttj5DE%W_g|fi@i3lOZNQ6?Pa?L`p{#hg{gDs^r`u)zCne#h)=RAf8dd$eZ&tAY>i8|&a}17lg(=kWjDhQH&dY)iqB1bn`PPa5=$ zb+Tz}I%{P))>dX+ejo{l@B>=b!1AD``sr|vX>5QkVQbi$fyeR-d;0qZ#7Uqe#wy@b z17)?c89}LeD7izitt+sjv%s<*{K^G(ZSYsT#WfJuKwJZH4a7C@|EvKVyJ4%U75n%* zu7S7);u;8Q0Q-k5d~jdz_Jd;2yAJrm={x?8Q+U3?|M~13_E|gt`+~P06ni)VTS7=- zFQf@?iIEU;IG*+F3f_KD?1h{qc*$@cujGWcLP_w_;dqvtvqVAciu3^wDy!`?t@?4u*1(Q8p@z?an-0C zS#XO@(C0;!>z^e~o2@Cs$V+Z@D2)PlAg%Hyt5d3b!PAwI3ab%G;Ir^1lF zxE>fntf=4X&mDVY(<{8M3bmBiwAoVeuOf%_-N<@aKU>90Y#H1OC~;5ec-W$NTeWT2 zMMHf*+m*j<(`N3wwJcieQFIDdHDa+k;CTw}Z}dT*v=aV*GwWpw*Vklb0M4=g{>K?CW?86MMHgV?yougtUu4N>g0?micaCGDqub1 zvlW8Fe>TIguHzXVi-IyOI{%U17OW~spV6qKj&igH~URg%YDrSOROV1M4qvp;?g z2>WwgMk}=)b8}V=Wg6KxyzPSQ&y8i#Ru@I5aEUkxAKS)dR4`8*Hcqk3#(>M9p zABV+@O(+Fi1`XxFIXOnO~K)he7R@K(%o>BwTdvzb0` zS5UU+rv}#+&I=9YP%5J0E(Tw?{x5$vUOSgapRw6fU;nr%@YPrb_0(0P)Vt^h8u-=k zc>llZ2_Ug3D9hBAfW@kkSB<+$%cEU?s(o8kG2qcEC{NSv<9G}z$>Xk4d9vV~SKD%S zhu4K}{g>{VXID_3w)!<~uZerIB0k!3XlrvgKJPoejX| zq@#S5kC(b%-x9P(YnhZWs#f95oCJ4a28W#Ztcp5cf)$<8CsyA7jM+hT=O*PSIOZzt`>FxO#)=8#L#oKHIGof5r8J?W3Ld zYkqzEK4S#Ju9?jKA@JTwM_Gg-pR6RC{L+6 zh=qerGDXpaaMeSb$B_cbFi&dA{@%mmW3Z<@z4J+Yj2g+}s?l(WvE9m1GtJ}B+Eb3v zMGA*OBRO0(Ash`5j}G|Ii0E6HcplTJpe#op3Ro=V(Cgk^rQzv>Rz-PqD}R>EKxEJ} zgM#ur(4+7eRWds6st}&gx6hT{w|49+pa`|2zHhnw{)xLk;Bya+t@N1K{?+wA)-Y@Z zeE$!gQq;Zw&yC`*xCY`H_;1!gB3)cqoDFOV4IjR1mxWI^eEbb;xjB5{&-e#_6%YQv zSMlb0#};_|ZrtMrc7tNijR(hM0C%BWnTA;Ei zZj~enr~dk3bQ{DPHn?(#s5HSi7B5i^)=$SW!;Zo74~ zDY*TzU&W@18(ZG3VptcOgk5c&XTihTTGUHRv_k8v8C_4Me|FnD zsgC^Ri~sWMa%5&9vziqiB8$qm)ii_A>q9y! None: + """ + Do not return anything, modify board in-place instead. + """ + que = [] + front = -1 + tail = -1 + + def push_back(que, front, tail, ele): + lq = len(que) + tail += 1 + if lq <= tail: + que.append(ele) + else: + que[tail] = ele + return tail + def pop(que, front, tail): + front += 1 + return (que[front], front) + d = [(1,0),(-1,0),(0,1),(0,-1)] + height = len(board) + width = len(board[0]) + def is_valid(x, y): + if x<0 or y < 0 or x >= height or y >= width: + return False + return True + is_visited = [] + for x, l in enumerate(board): + is_visited.append([]) + for y in l: + is_visited[x].append(0) + if height < 3 or width < 3: + return board + def is_edge(x, y): + if x == 0 or y == 0 or x == height - 1 or y == width - 1: + return True + return False + for x in range(1,height - 1): + for y in range(1,width - 1): + if board[x][y] == 'X' or is_visited[x][y] == 1: continue + tail = push_back(que,front, tail,(x,y)) + flag = 0 + last_front = front + while front != tail: + (top_ele, front) = pop(que, front, tail) + for (cx, cy) in d: + nx = cx + top_ele[0] + ny = cy + top_ele[1] + if is_edge(nx, ny): + if board[nx][ny] == 'O': + flag = 1 + continue + if board[nx][ny] == 'O' and is_visited[nx][ny]==0: + tail = push_back(que,front,tail,(nx,ny)) + is_visited[nx][ny]=1 + if flag == 0: + for idx in range(last_front + 1, front + 1): + xx = que[idx][0] + yy = que[idx][1] + board[xx][yy]='X' + return board + \ No newline at end of file diff --git a/211-240602-pass/main.py b/211-240602-pass/main.py new file mode 100644 index 0000000..f7e23ff --- /dev/null +++ b/211-240602-pass/main.py @@ -0,0 +1,71 @@ +class TrieNode: + def __init__(self, val = ''): + self.child = [] + self.is_word = False + self.val = val + self.child_map = {} +class Trie: + def __init__(self): + self.root = TrieNode() + + def insert(self, word: str) -> None: + parent_node = self.root + for idx, letter in enumerate(word): + if letter not in parent_node.child_map: + new_node = TrieNode(letter) + parent_node.child.append(new_node) + parent_node.child_map[letter] = len(parent_node.child) - 1 + parent_node = new_node + else: + idx = parent_node.child_map[letter] + parent_node = parent_node.child[idx] + parent_node.is_word = True + + def search(self, word: str) -> bool: + def subsearch(node, word) -> bool: + parent_node = node + if len(word) == 0: + return parent_node.is_word + ch = word[0] + rlt = False + if ch == '.': + flag = 0 + for child in parent_node.child_map: + idx = parent_node.child_map[child] + r = subsearch(parent_node.child[idx], word[1:]) + if r == True: flag = 1 + if flag == 1: + return True + else: + return False + else: + if ch not in parent_node.child_map: + return False + else: + idx = parent_node.child_map[ch] + return subsearch(parent_node.child[idx], word[1:]) + return subsearch(self.root, word) + + def startsWith(self, prefix: str) -> bool: + parent_node = self.root + for idx, letter in enumerate(prefix): + if letter not in parent_node.child_map: + return False + idx = parent_node.child_map[letter] + parent_node = parent_node.child[idx] + return True +class WordDictionary: + def __init__(self): + self.tree = Trie() + + def addWord(self, word: str) -> None: + self.tree.insert(word) + + def search(self, word: str) -> bool: + return self.tree.search(word) + + +# Your WordDictionary object will be instantiated and called as such: +# obj = WordDictionary() +# obj.addWord(word) +# param_2 = obj.search(word) \ No newline at end of file diff --git a/77-240602-pass/main.py b/77-240602-pass/main.py new file mode 100644 index 0000000..41fb99e --- /dev/null +++ b/77-240602-pass/main.py @@ -0,0 +1,13 @@ +class Solution: + def combine(self, n: int, k: int) -> List[List[int]]: + rlt = [] + def comb(l, cur, k): + if k == 0: + rlt.append(l) + return + for i in range(cur, n + 1): + tmp_l = l.copy() + tmp_l.append(i) + comb(tmp_l, i + 1, k - 1) + comb([], 1, k) + return rlt \ No newline at end of file