摘要:
因为两者操作差不多,所以get和update都要O(n) class NumMatrix: def __init__(self, matrix: List[List[int]]): if matrix is None or len(matrix) == 0 or len(matrix[0]) == 阅读全文
摘要:
将时间点排序就行 class Solution: def minMeetingRooms(self, intervals: List[List[int]]) -> int: points = [] for interval in intervals: points.append([interval[ 阅读全文
摘要:
两个栈,永远记录当前解出来的码 class Solution: def decodeString(self, s: str) -> str: strStack = [] numStack = [] current = '' num = 0 for char in s: if char >= '0' 阅读全文
摘要:
如果完全二叉树,最左和最右的路径是一样长的。利用这个递归。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self 阅读全文
摘要:
贪心,只要检查第一个骨牌上下是否能满足即可 class Solution: def minDominoRotations(self, A: List[int], B: List[int]) -> int: if len(A) == 0: return -1 def checkUpDown(A, B) 阅读全文
摘要:
位运算 class Solution: def validUtf8(self, data: List[int]) -> bool: multiByteCount = 0 for byte in data: if multiByteCount > 0: # in multi-byte # start 阅读全文
摘要:
在写 “广度优先遍历” 的时候,要注意一点:所有加入队列的结点,都应该马上被标记为 “已经访问”,否则有可能会被重复加入队列。 如果等到队列出队的时候才标记 “已经访问”,事实上,这种做法是错误的。因为如果不在刚刚入队列的时候标记 “已经访问”,相同的结点很可能会重复入队 from queue im 阅读全文
摘要:
除法求值,先建立树,然后使用递归,主要不要进入环。 后来发现x/x = 1.0这条边可以不用,这样只要记录node是不是访问过就可以。 class Solution: def calcEquation(self, equations: List[List[str]], values: List[fl 阅读全文
摘要:
调用多次readN,所以要重复使用internal buffer """ The read4 API is already defined for you. @param buf, a list of characters @return an integer def read4(buf): # B 阅读全文
摘要:
O(n^2)的方法,最后一个case超时。需要用kmp方法或者manacher方法才能O(n),先忽略了。 class Solution: def isPalindrome(self, sub: str) -> bool: for i in range(len(sub) // 2): if sub[ 阅读全文