随笔分类 - leetcode算法题
摘要:287. 寻找重复数 快慢指针,类似于找环的入口 从理论上讲,数组中如果有重复的数,那么就会产生多对一的映射,这样,形成的链表就一定会有环路了, 综上 1.数组中有一个重复的整数 <==> 链表中存在环 2.找到数组中的重复整数 <==> 找到链表的环入口 至此,问题转换为 142 题。 class
阅读全文
摘要:200. 岛屿数量 class Solution: def numIslands(self, grid: List[List[str]]) -> int: def dfs(grid, i, j): if not 0 <= i < len(grid) or not 0 <= j < len(grid[
阅读全文
摘要:209. 长度最小的子数组 向右移动右边界,若>=target则收缩左边界 class Solution: def minSubArrayLen(self, target: int, nums: List[int]) -> int: res = float('inf') sum_ = 0 left
阅读全文
摘要:707. 设计链表 单链表 class Node: def __init__(self, val): self.val = val self.next = None class MyLinkedList: def __init__(self): self.head = Node(0) # 虚拟头部节
阅读全文
摘要:104. 二叉树的最大深度 递归法 可以使用前序遍历(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。 而根节点的高度就是二叉树的最大深度 class Solution: def maxDepth(self, root: Optional[TreeNode]) ->
阅读全文
摘要:**注意:**如果当前节点会对下面的子节点有整体影响,可以通过辅助函数增长参数列表,借助参数传递信息。 子树题目 101. 对称二叉树 **注意:**只能是“后序遍历”,因为我们要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等。 正是因为要遍历两棵树而且要比较内侧和外侧节点,所以准确
阅读全文
摘要:二叉树的种类 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 深度为k,有2^k-1个节点 完全二叉树 在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第
阅读全文
摘要:动态规划: 647. 回文子串 布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。 当s[i]与s[j]不相等,dp[i][j]一定是false。 当s[i]与s[j]相等时,有如下三种情况 情况一:下标i
阅读全文
摘要:![](https://img2022.cnblogs.com/blog/2253952/202205/2253952-20220513110913639-900780115.png) 回溯法也可以叫做回溯搜索法,它是一种**搜索的方式**。 回溯是递归的副产品,只要有递归就会有回溯。所以**回溯函
阅读全文
摘要:![](https://img2022.cnblogs.com/blog/2253952/202205/2253952-20220513170850709-1805566190.png) ### 动态规划: #### 子序列(不连续) ##### (1)[300. 最长递增子序列](https://
阅读全文
摘要:动态规划: (1)121. 买卖股票的最佳时机 **注意:**只能买卖一次 class Solution: def maxProfit(self, prices: List[int]) -> int: n = len(prices) dp = [[0] * 2 for _ in range(n)]
阅读全文
摘要:背包递推公式 问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]); ,对应题目如下: 416.分割等和子集 如果使用一维dp数组,物品遍历的for循环放在外层,遍历背包的for循环放在内层,且内层for循环倒序遍历! cla
阅读全文
摘要:![](https://img2022.cnblogs.com/blog/2253952/202205/2253952-20220506152657922-1126705847.jpg) ####(1)[912. 排序数组](https://leetcode-cn.com/problems/sort
阅读全文
摘要:引入头文件 有些笔试是ACM模式,需要自己处理输入输出,还要自己添加头文件,在这里整理一下 #include <iostream> #include <string> #include <vector>//数组 #include <queue>//队列 #include <stack>//栈 #in
阅读全文
摘要:27. 移除元素 用快慢指针,快指针将慢指针位置的数覆盖 class Solution: def removeElement(self, nums: List[int], val: int) -> int: fast, slow = 0, 0 while fast < len(nums): if n
阅读全文