原创 有效的括號

  class Solution: def isValid(self, s: str) -> bool: if s is None: return True

原创 路徑總和

遞歸,直接把問題轉換爲葉子節點的val是否等於sum(注:使用return 遞歸 or 遞歸的方法將葉子節點的返回值傳遞至root節點)。 # Definition for a binary tree node. # class Tre

原创 二叉樹的最大深度

# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # s

原创 逆波蘭表達式求值

本想用字典代替if判斷會快,然而。。。並不會: class Solution: def __init__(self): self.operator = { '+': self.a

原创 刪除排序數組中的重複項

因爲是排序數據,所以極其簡單: class Solution: def removeDuplicates(self, nums: List[int]) -> int: if nums:

原创 移動零

 由刪除排序數組中的重複項來的靈感,都是交換類題目,雙指針,k之前的都是有效位 class Solution: def moveZeroes(self, nums: List[int]) -> None: """

原创 兩數之和

建立對應的哈希表,key=數,value=索引,遍歷一次,每次找target-num即可: class Solution: def twoSum(self, nums: List[int], target: int) -> Li

原创 有效的數獨

因爲每次按行遍歷,因此建立一個行哈希表,9個列哈希表,和3個方格哈希表,通過查詢元素是否在相應表中來判斷: class Solution: def isValidSudoku(self, board: List[List[str

原创 存在重複元素

使用哈希表(字典),出現訪問錯誤會報KeyError,若未出現即返回True,否則返回False,複雜度O(N) class Solution: def containsDuplicate(self, nums: List[in

原创 島嶼數量

BFS方法,每次發現爲‘1’的島嶼才搜索,且只要搜到連通域就將其置‘0’: class Solution: def numIslands(self, grid: List[List[str]]) -> int:

原创 只出現一次的數字

哈希表法: class Solution: def singleNumber(self, nums: List[int]) -> int: visited = {}

原创 買賣股票的最佳時機 II

想法是取到低峯和高峯相減,我的解法: class Solution: def maxProfit(self, prices: List[int]) -> int: if not prices:

原创 設計循環隊列

 你的實現應該支持如下操作: MyCircularQueue(k): 構造器,設置隊列長度爲 k 。 Front: 從隊首獲取元素。如果隊列爲空,返回 -1 。 Rear: 獲取隊尾元素。如果隊列爲空,返回 -1 。 enQueue(va