leetcode 107. 二叉樹的層次遍歷 II 916. 單詞子集 535. TinyURL 的加密與解密
107. 二叉樹的層次遍歷 II
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
result = []
if root is None:
return result
queue = deque([root,None])
sublist = []
while queue:
tmp = queue.popleft()
if tmp is None:
if queue:
queue.append(None)
result.append(sublist.copy())
sublist = []
continue
sublist.append(tmp.val)
if tmp.left:
queue.append(tmp.left)
if tmp.right:
queue.append(tmp.right)
return result[::-1]
916. 單詞子集
class Solution:
def wordSubsets(self, A: List[str], B: List[str]) -> List[str]:
result = []
# 構建兩個map
mapA = defaultdict(dict)
mapB = defaultdict(int) # B的組合一下,相同的字母以最多的為準
for a in A:
for c in a:
mapA[a][c]=mapA[a].get(c,0)+1
all_chr_in_B = set()
for b in B:
tmp=defaultdict(int)
for c in b:
tmp[c]+=1
all_chr_in_B.add(c)
for ch in all_chr_in_B:
mapB[ch] = max(mapB[ch],tmp[ch])
for val in A:
for key,values in mapB.items():
if mapA[val].get(key,0)<values:
break
else:
result.append(val)
return result
535. TinyURL 的加密與解密
還沒遇見過這樣的主觀題呢。
1. map法
import re
class Codec:
url_map = defaultdict()
num=1
def encode(self, longUrl: str) -> str:
"""Encodes a URL to a shortened URL.
"""
if self.num not in self.url_map:
self.url_map[str(self.num)]=longUrl
self.num+=1
return "http://tinyurl.com/"+str(self.num-1)
return "http://tinyurl.com/"+str(self.num)
def decode(self, shortUrl: str) -> str:
"""Decodes a shortened URL to its original URL.
"""
return self.url_map[shortUrl.replace("http://tinyurl.com/","")]
# Your Codec object will be instantiated and called as such:
# codec = Codec()
# codec.decode(codec.encode(url))
2. 雜湊
import re
class Codec:
url_map = defaultdict()
def encode(self, longUrl: str) -> str:
"""Encodes a URL to a shortened URL.
"""
if str(hash(longUrl)) not in self.url_map:
self.url_map[str(hash(longUrl))]=longUrl
return "http://tinyurl.com/"+str(hash(longUrl))
return "http://tinyurl.com/"+str(self.num)
def decode(self, shortUrl: str) -> str:
"""Decodes a shortened URL to its original URL.
"""
return self.url_map[shortUrl.replace("http://tinyurl.com/","")]
# Your Codec object will be instantiated and called as such:
# codec = Codec()
# codec.decode(codec.encode(url))
相關文章
- LeetCode-107-二叉樹的層序遍歷 IILeetCode二叉樹
- [Leetcode]102.二叉樹的層次遍歷LeetCode二叉樹
- 通過層次遍歷計算二叉樹的層數二叉樹
- 二叉樹的層序遍歷二叉樹
- 二叉樹的按層遍歷二叉樹
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹
- 層序遍歷二叉樹二叉樹
- LeetCode102.二叉樹的層序遍歷LeetCode二叉樹
- 採用層次遍歷判斷二叉樹為完全二叉樹二叉樹
- 二叉樹的建立與遍歷二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- [LintCode]BinaryTreeLevelOrderTraversal(二叉樹的層次遍歷)二叉樹
- 【面試】基於二叉樹層次遍歷相關問題的求解面試二叉樹
- 二叉樹的構造與遍歷二叉樹
- 二叉樹的遍歷二叉樹
- Leetcode 演算法題解系列 - 二叉樹的層序遍歷LeetCode演算法二叉樹
- 【層次查詢】Hierarchical Queries之“樹的遍歷”
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 資料結構——樹與二叉樹的遍歷資料結構二叉樹
- 完全二叉樹的遍歷二叉樹
- 玩轉二叉樹(樹的遍歷)二叉樹
- Leetcode——94.二叉樹的中序遍歷LeetCode二叉樹
- Leetcode——144. 二叉樹的前序遍歷LeetCode二叉樹
- 二叉樹的廣度遍歷和深度遍歷()二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- leetcode 103. 二叉樹的鋸齒形層序遍歷 BFS方法LeetCode二叉樹
- 二叉樹---遍歷二叉樹
- 二叉樹遍歷二叉樹
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- leetcode----給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷)LeetCode二叉樹
- 二叉樹的遍歷實現二叉樹
- 二叉樹的遍歷筆記二叉樹筆記
- 【練習】二叉樹的遍歷二叉樹
- UVA 536 二叉樹的遍歷二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- LeetCode題144. 二叉樹的前序遍歷LeetCode二叉樹
- 【C++】返回每一層二叉樹的平均值(層序遍歷)C++二叉樹