随笔分类 -  LeetCode

leetCode刷题笔记
摘要:动态规划 背景: 从递归到记忆化搜索再到动态规划: 递归思路: 方法论 方法一:循序渐进 通过引入动态规划的逻辑,来解决动态规划的问题:首先从递归出发,写出递归表达式,根据递归表达式,得到记忆化搜索,再有记忆化搜索翻译为递归(去掉递归中的递的过程)(结合198.打家劫舍来理解): dfs(i,j) 阅读全文
posted @ 2025-07-14 19:52 waterme 阅读(48) 评论(0) 推荐(0)
摘要:回溯算法(2) 网格型 难以画出递归搜索树,类似于生活中的走格子。 单词搜索 问题描述: 这类问题多出一个找出起点的过程,找到了递归的起点,再从起点进去上下左右的移动即可,这里可以通过修改原网格中的字符实现标记已经走过这里了,然后递归后修改回来实现(悔棋)。 N皇后 问题描述: 明确一点:每行每列至 阅读全文
posted @ 2025-07-11 17:25 waterme 阅读(12) 评论(0) 推荐(0)
摘要:二叉树篇 定义: 二叉树是一种树形结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。 性质: 每个节点最多有两个子节点。 子节点的顺序不能颠倒(即左子树与右子树有严格区分)。 二叉树的第 i 层最多有 2^(i-1) 个节点。 深度为 k 的二叉树最多有 2^k - 1 个节点。 常见类型 阅读全文
posted @ 2025-07-07 00:17 waterme 阅读(26) 评论(0) 推荐(0)
摘要:146.LRU缓存篇 问题描述 实现一个满足LRU(最近最少使用)缓存约束的LRUCache类。该缓存满足以下三个条件: 缓存容量LRUCache(int capacity) int get(int key) 如果关键字key存在,则返回对应value,否则返回-1; void put(int ke 阅读全文
posted @ 2025-07-03 00:30 waterme 阅读(30) 评论(0) 推荐(0)
摘要:递归篇 递归的定义: 在函数内部重复调用函数自身。 递归的理解 将原问题拆解为子问题:例如求1-100的和,我们可以把这个问题拆解为求解100与1-99的和,依次类推最后就会把问题转化为求1+2的和。所以将原问题拆解的本质是:将复杂问题拆分为相同或者相似的简单的子问题,这也就是分治的思想。 想到这里 阅读全文
posted @ 2025-07-02 00:12 waterme 阅读(23) 评论(0) 推荐(0)