随笔分类 - LeetCode
刷过的题记录一下,思路仅供参考,并非最优解。
摘要:方法一:广搜,迭代 class Solution(object): # 相当于广度优先搜索,使用队列实现。 # 队列初始化,将根节点压入队列。 # 当队列不为空,进行如下操作: # 弹出一个节点,访问,若左子节点或右子节点不为空,将其压入队列。 def levelOrder(self, root):
阅读全文
摘要:class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Solution(object): def isValidBST(self, root): """
阅读全文
摘要:方法一:迭代 class Solution(object): # 迭代 def inorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ if not root: return [] mid_stack
阅读全文
摘要:方法一:二分查找。 class Solution(object): # 二分法 def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ i, j = 0, len(nums) - 1 while i <= j:
阅读全文
摘要:class Solution(object): def isBalanced(self, root): """ :type root: TreeNode :rtype: bool """ if not root: return True # 左、右子树深度 heightLeft = self.tre
阅读全文
摘要:思路:递归。 终止条件是两个节点都为空,return True; 或者两个节点中有一个为空,return False; 或者两个节点的值不相等,return False; class Solution(object): def isSymmetric(self, root): """ :type r
阅读全文
摘要:class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ # 根节点值不同,树不同 if p.val != q.val: return Fa
阅读全文
摘要:方法一:二分查找。 class Solution(object): # 二分法 def countNegatives(self, grid): """ :type grid: List[List[int]] :rtype: int """ ans = 0 for nums in grid: if n
阅读全文
摘要:class Solution(object): def kWeakestRows(self, mat, k): """ :type mat: List[List[int]] :type k: int :rtype: List[int] """ power = [sum(line) for line
阅读全文
摘要:class Solution(object): def maxDepthAfterSplit(self, seq): """ :type seq: str :rtype: List[int] """ res = [] if not seq: return res depth, max_depth =
阅读全文
摘要:思路:二分法。 class Solution(object): def nextGreatestLetter(self, letters, target): letters = list(set(letters)) letters.sort() if target in letters: index
阅读全文
摘要:class Solution(object): def findRadius(self, houses, heaters): """ :type houses: List[int] :type heaters: List[int] :rtype: int """ ans = [] heaters.s
阅读全文
摘要:class Solution(object): def arrangeCoins(self, n): """ :type n: int :rtype: int """ return int(2 ** 0.5 * (n + 1 / 8) ** 0.5 - 1 / 2) if __name__ == '
阅读全文
摘要:class Solution(object): def isSubsequence(self, s, t): """ :type s: str :type t: str :rtype: bool """ if len(s) > len(t): return False elif len(s) ==
阅读全文
摘要:方法一:二分查找。 class Solution(object): # 二分查找 def kthSmallest(self, matrix, k): """ :type matrix: List[List[int]] :type k: int :rtype: int """ n = len(matr
阅读全文
摘要:class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ # 处理target不在nums中的情况 if
阅读全文
摘要:思路: eg:11÷3 ∵11>3 ∴res>=1 又∵11>3+3=6 ∴res>=2 (1+1) 又∵11<6+6=12 ∴res<4 (2+2) 即2<=res<4 递归部分: 又11-6=5>3 ∴restemp >= 1 又∵5<6 (3+3) ∴restemp<2 (1+1) 即1<=r
阅读全文
摘要:一:二分法算法过程 二分查找也称折半查找(Binary Search)。 折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 所以排序数组中的查找、搜索问题,首先想到用 二分法 解决。 二分查找的过程: 假设线性表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果
阅读全文
摘要:方法一思路:用栈 将nums2顺序入栈stack[],当栈不空时,取待入栈元素num和栈顶元素top比较,若num top且top在nums1中,则num即是所找的数。 python class Solution(object): def nextGreaterElement(self, nums1
阅读全文
摘要:思路: 用两个栈:stackIn[] 和 stackOut[]分别模拟入队和出队; 注意: 出队时,只有当stackOut为空时才能将stackIn的元素入栈stackOut,且必须将stackIn的元素一次性全部转移到stackOut中,再出队。 进队时:只有当待入队元素全部进入stackIn后才
阅读全文