Leetcode
文章平均质量分 57
yyistiger
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode之二叉树
LeetCode之二叉树一、二叉树226. 翻转二叉树114. 二叉树展开为链表116. 填充每个节点的右指针654. 最大二叉树105. 根据前序和中序构建二叉树106. 根据后序和中序构建二叉树652. 寻找重复的子树236. 二叉树的最近公共祖先222. 计算完全二叉树的节点数297. 二叉树的序列化与反序列化二、二叉搜索树230. BST中第k小的元素538. 把BST转换为累加树98. 验证BST700. 搜索BST中的某个节点701. 添加节点到BST中450. 删除BST中的某个节点96. 不原创 2021-03-17 13:49:17 · 283 阅读 · 0 评论 -
LeetCode动态规划之背包问题
LeetCode动态规划之背包问题 0-1背包问题 给一个可以装重量为M的背包,和N个物品,每个物品有重量和价值两种属性,分别存放在数组wt[i]和val[i]中,请问使用这个背包,最多能装多少价值的物品? public int maxVal(int M, int N, int[] wt, int[] val) { //dp[i][j]表示 对于前i个物品,承重为j的背包可以存储的最大价值 int[][] dp = new int[N + 1][M + 1]; //遍历所有的状态原创 2021-03-14 23:30:50 · 283 阅读 · 0 评论 -
LeetCode动态规划之贪心算法
LeetCode动态规划之贪心算法 贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法还需要满足【贪心选择性质】 什么是贪心选择性质呢,简单说就是:每一步都做出一个局部最优的选择,最终的结果就是全局最优。 比如你面前放着 100 张人民币,你只能拿十张,怎么才能拿最多的面额?显然每次选择剩下钞票中面值最大的一张,最后你的选择一定是最优的。 目录LeetCode动态规划之贪心算法55. 跳跃游戏45. 跳跃游戏 II 55. 跳跃游戏 //贪心算法 public boolean canJum原创 2021-03-14 22:20:13 · 272 阅读 · 0 评论 -
LeetCode之动态规划:子序列问题
LeetCode之动态规划:子序列问题 300. 最长递增子序列 子序列是指:由数组中不连续,但相互顺序不变的元素组成的序列。 dp数组的定义:dp[n]表示以nums[n]结尾的最长递增子序列 //O(n2) public int lengthOfLIS(int[] nums) { int n = nums.length; //dp[n]表示以nums[n]结尾的最长递增子序列 int[] dp = new int[n]; //初始化,每个以自己为结尾的递增子序列至少为1原创 2021-03-14 21:58:22 · 289 阅读 · 0 评论 -
LeetCode之动态规划
LeetCode之动态规划 首先推荐一个GitHub项目:labuladong。本文是我在做labuladong算法小抄中动态规划题的相关源码。 动态规划的使用场景: 动态规划问题的一般形式是求最值,比如最长递增子序列等等。 动态规划的核心问题是穷举。而动态规划的穷举有一个特别之处:存在【重叠子问题】,这样就可以使用一个备忘录或dp数组来保存之前子问题的结果,优化穷举过程。 另外,动态规划问题一定会有【最优子结构,子问题之间互相独立,互不干扰】,也就是说:通过求解子问题的最值,我们可以进一步推导出原文题原创 2021-03-13 00:22:35 · 207 阅读 · 0 评论 -
LeetCode之链表
首先推荐一个GitHub项目:labuladong。本文是我在做labuladong算法小抄中链表题目的相关源码。 处理链表问题通常可以有迭代法和递归法两种。迭代法思路比较简单,但是写法通常比较复杂;而递归法的思路相对较难,但是写法通常比较简单。在直接做LeetCode之前,先实现几个简单问题的迭代法和递归法。 问题1:翻转整条单链表 方法一:迭代法 public ListNode reverse(ListNode head) {//翻转整条单链表 ListNode pre, cur, nxt;.原创 2021-03-10 22:57:46 · 105 阅读 · 0 评论 -
LeetCode之LFU缓存机制
LeetCode之LFU缓存机制 请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。 实现 LFUCache 类: class LFUCache { //用数据结构的容量 capacity 初始化对象 public LFUCache(int capacity) { } //如果键存在于缓存中,则获取键的值,否则返回 -1。 public int get(int key) { } // 如果键已存在,则变更其值;如果键不存在,请原创 2021-03-09 16:38:24 · 173 阅读 · 0 评论 -
LeetCode之LRU缓存机制
LeetCode之LRU缓存机制 题目来源于Leetcode146.LRU 缓存机制。 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: class LRUCache { //LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 public LRUCache(int capacity) { } //int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的原创 2021-03-09 15:57:05 · 324 阅读 · 0 评论 -
Leetcode1640. 数组匹配(字符串匹配KMP算法)
这里写目录标题Leetcode1640. 数组(字符串)匹配暴力匹配KMP算法 Leetcode1640. 数组(字符串)匹配 题目大意就是:有一个整型数组int [] arr,还有一个整型数组的数组 int[ ][ ] pieces。 要求判断:适当地选取int[ ][ ] pieces中的数组,能否填充完整int [] arr。可以则返回true,不能返回false。(注意:题目中已经说明int[ ][ ] pieces数组中的元素是不重复的!) 我自己的理解:这道题目的关键是数组(字符串)匹配。 首先原创 2020-11-06 12:33:06 · 437 阅读 · 0 评论
分享