随笔分类 - 每日刷题记录
为了找工作做准备
摘要:1. 102. 二叉树的层序遍历 - 力扣(LeetCode) 方法一:迭代+队列 class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if not root: return [] qu
阅读全文
摘要:方法一:空指针标记法 1. 迭代法前序遍历 ① 空指针标记法 class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right cl
阅读全文
摘要:代码随想录 144. 二叉树的前序遍历 - 力扣(LeetCode) # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.ri
阅读全文
摘要:看明白了卡哥的讲解后,做的很快,很简单。代码随想录 144. 二叉树的前序遍历 - 力扣(LeetCode) 写法1 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=Non
阅读全文
摘要:代码随想录 解题过程中二叉树主要有两种形式: 1. 满二叉树 2. 完全二叉树 优先级队列其实是一个堆,堆就是一棵完全二叉树,同时保证父子节点的顺序关系。 二、二叉搜索树 三、平衡二叉搜索树
阅读全文
摘要:python解法 class Solution: def simplifyPath(self, path: str) -> str: path1 = path.split('/') path2 = [] for item in path1: if item == '' or item == '.':
阅读全文
摘要:Python 中的 isdigit() 方法 是字符串对象的一个方法,用于检查字符串中的所有字符是否都是数字字符(0-9)。如果字符串中包含负号(-)或其他非数字字符(如小数点 .),isdigit() 会返回 False。 1. isdigit() 的行为 isdigit() 只能识别 Unico
阅读全文
摘要:347. 前 K 个高频元素 - 力扣(LeetCode) 代码随想录 我的方法: 1.遍历nums,用字典统计频率,O(n) 2.用sort根据字典中键对应的值对键进行排序,O(n log n) 3.取排序的键列表的前K个元素,O(k) 总的时间复杂度为 O(n) + O(n log n) + O
阅读全文
摘要:239. 滑动窗口最大值 - 力扣(LeetCode) 代码随想录 单调队列是一种特殊的队列数据结构,主要用于解决滑动窗口类问题。它的特点是队列中的元素始终保持单调递增或单调递减的顺序。 核心特点1. 单调性:队列中的元素按单调递增或递减排列。2. 动态维护:在插入新元素时,会移除破坏单调性的旧元素
阅读全文
摘要:代码随想录 150. 逆波兰表达式求值 - 力扣(LeetCode) 知识点1:递归就是用栈来实现的。 知识点2:逆波兰表达式是用后序遍历的方式把二叉树序列化了。 知识点3:将字符串形式的数字转换为实际的数字(整数或浮点数)在Python中是非常直接的操作,可以使用内置函数int()和float()
阅读全文
摘要:1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode) 代码随想录 这题做的没有乐趣 1.使用栈 class Solution: def removeDuplicates(self, s: str) -> str: stack = [] for char in s: if stack
阅读全文
摘要:代码随想录 20. 有效的括号 - 力扣(LeetCode) My method:用两个栈解决 class Solution: def isValid(self, s: str) -> bool: stack = [] for char in s: stack.append(char) n = le
阅读全文
摘要:自己写的: 类似用两个栈实现队列的那道题,只要简单的转换一下思路,在脑子里模拟一下用两个队列配合表现出一个栈的功能。 from collections import deque class MyStack: def __init__(self): # 两个队列,相当于两个篮子 self.deque1
阅读全文
摘要:232. 用栈实现队列 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 思想:用下面的两个栈模拟队列 from collections import deque class MyQueue: def __init__(self): # in主要负责push,out
阅读全文
摘要:终于走完双指针这一节了 方法一:双指针 具体为两个for循环(对应第一和第二个数)加left和right指针(找第三和第四个数) class Solution: def fourSum(self, nums: List[int], target: int) -> List[List[int]]: r
阅读全文
摘要:15. 三数之和 - 力扣(LeetCode) 代码随想录 1.双指针 我认为实际上应该是三指针。具体来说,以一个i遍历列表,作为第一个数,另外两个左右指针确定第二和第三个数字,逐渐朝中间方向移动,找到所有满足条件的三个数。 from collections import defaultdict c
阅读全文
摘要:142. 环形链表 II - 力扣(LeetCode) 代码随想录 1.快慢指针法(来自代码随想录) 需要找规律,和数学式子的简单推理 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): #
阅读全文
摘要:面试题 02.07. 链表相交 - 力扣(LeetCode) 代码随想录 1. 解法1 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next
阅读全文
摘要:19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 代码随想录 1.非双指针方法 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self
阅读全文
摘要:206. 反转链表 - 力扣(LeetCode) 代码随想录 1.双指针法 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val
阅读全文