LeetCode
文章平均质量分 80
大仙的bug日志
一起肝代码,bug一个不留!
展开
-
LeetCodes刷题总结9——字符串解码
真的细!!!原创 2022-10-10 14:50:04 · 260 阅读 · 0 评论 -
LeetCodes刷题总结8——买卖股票的最佳时机(系列)
力扣刷题总结系列之--买卖股票的最佳时机原创 2022-09-08 14:23:56 · 173 阅读 · 0 评论 -
LeetCodes刷题总结7——LRU缓存
题目146. LRU 缓存 - 力扣(LeetCode)请你设计并实现一个满足LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value)如果关键字key 已经存在,则变更其数据值value ...原创 2022-05-11 11:21:49 · 796 阅读 · 0 评论 -
LeetCodes刷题总结6——二叉树中的最大路径和
题目124. 二叉树中的最大路径和 - 力扣(LeetCode)路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例 :输入:root = [-10,9,20,null,null,15,7]输出:42解释:最优路径是 15 -> 20 -> 7 ,.原创 2022-05-10 11:17:02 · 122 阅读 · 0 评论 -
LeetCodes刷题总结5——单调栈思想
前言在关于一维数组的各类题目中,存在着一种神奇的思想,它不需要对一个数组来回恶心的遍历,也不需要苦思冥想动态规划方程,这就是单调栈。顾名思义,单调栈是一个栈,需要题目符合先进后出的方式,同时它是单调的,也就是栈里面的元素要么递增,要么递减,一般是边入栈边处理,遇到不单调的情况便进行处理。总之,在我们读取元素是从左到右的,而处理元素是从右到左的,就可以考虑单调栈的思想了。模板在这里提前说明,算法题是千变万化的,这个模板只能当作代码的初步骨架或解题思路,是我在一些算法题里总结的,不具有普适性。原创 2022-04-25 10:59:47 · 205 阅读 · 0 评论 -
LeetCodes刷题总结4——最小覆盖子串
题目76. 最小覆盖子串 - 力扣(LeetCode) (leetcode-cn.com)思路这道题非常经典,属于滑动窗口的经典思想。首先看到这题估计很多人会去想动态规划,看当前子串与字符串t的关系,但是你会想动态规划方程怎么写?可能几乎没有出路。好吧,任何算法都是暴力求解优化来的,我们先想暴力算法,把字符串s的所有子串都拿出来去看有没有覆盖字符串t,一定可行但是想都不要想一定超时,那么我们考虑剪枝,这个子串一定大于等于t,不然不可能覆盖(注:题目要求结果覆盖t的所有字符串,包括重复的)原创 2022-04-18 14:52:56 · 362 阅读 · 0 评论 -
LeetCodes刷题总结3——编辑距离
题目72. 编辑距离 - 力扣(LeetCode) (leetcode-cn.com)思路这道题拿到想了很久,三种变换方式,按照暴力的想法那么可能性太多了,根本无从下手。最后还是看题解。。。嗯,强大的dp方式。因为本题输入是两个字符串,那就可以变成一点点子串向前,划分子问题dp最在行了。定义dp[i][j]表示word1的前 i 个字母和word2的前 j 个字母的编辑距离的二维数组。然后这么多情况怎么分析呢?打开画图板,先不考虑特殊,只看普遍的情况。假设现在循环到了word1的第i个字符和原创 2022-04-04 14:05:08 · 669 阅读 · 0 评论 -
LeetCodes刷题总结2——括号生成
题目https://leetcode-cn.com/problems/generate-parentheses/思路1——dfs本题在暴力破解(列出所有情况)的基础上很容易想到回溯和剪枝,由于涉及到递归,有些难度。先上一个其他大神给的深度优先遍历的模板:void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return; } if(越界或者是不合法状态)..原创 2022-03-20 16:25:15 · 118 阅读 · 0 评论 -
LeetCodes刷题总结1——寻找两个正序数组的中位数
题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n))示例1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例2:输入:nums1 = [0,0], nums2 = [0,0]输出:0.00000来源:力扣(LeetCode)链接:https://leetc...原创 2021-12-29 17:07:51 · 435 阅读 · 0 评论