自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 问答 (1)
  • 收藏
  • 关注

原创 ACM模式(基础输入输出)

Java方法间的调用。

2023-08-24 09:15:30 192

原创 236. 二叉树的最近公共祖先

【代码】236. 二叉树的最近公共祖先。

2023-04-11 08:33:01 99

原创 leedcode10|102. 二叉树的层序遍历

【代码】leedcode10|102. 二叉树的层序遍历。

2023-04-10 08:18:48 110

原创 DAY15|102.二叉树的层序遍历。。。。等层序遍历的十道题

117.填充每个节点的下一个右侧节点指针II。代码随想录中的这题java和c++不太一样。116.填充每个节点的下一个右侧节点指针。107.二叉树的层次遍历II。515.在每个树行中找最大值。102.二叉树的层序遍历。637.二叉树的层平均值。429.N叉树的层序遍历。104.二叉树的最大深度。111.二叉树的最小深度。199.二叉树的右视图。

2023-04-10 08:00:03 291

原创 23. 合并 K 个升序链表(暴力法/优先级队列)

需要维护当前每个链表没有被合并的元素的最前面一个,k 个链表就最多有k 个满足这样条件的元素,每次在这些元素里面选取val 属性最小的元素合并到答案中。在选取最小元素的时候,我们可以用优先队列来优化这个过程。怎么根据Comparable方法中的compareTo方法的返回值的正负 判断升序 还是 降序?23.合并 K 个升序链表。方法二:用优先级队列。

2023-04-09 11:15:57 63

原创 33.搜索旋转排序数组(二分搜索)

33.搜索旋转排序数组。

2023-04-08 09:16:40 29

原创 21. 合并两个有序链表

【代码】912. 排序数组。

2023-04-07 08:32:41 45

原创 codetop7|912. 排序数组(普通快排会超时)

快排的优化:https://leetcode.cn/problems/sort-an-array/solution/kuai-su-pai-xu-you-hua-zhen-dui-duo-zhon-ryq4/

2023-04-06 10:32:07 83

原创 15、三数之和(利用双指针(三指针)))

关键字:不可以包含重复。

2023-04-05 09:31:48 43

原创 DAY5|215.数组中的第K个最大元素(匿名内部类,调用库函数实现大顶堆,动手实现大顶堆以及堆排序)

方法三 大顶堆https://leetcode.cn/problems/kth-largest-element-in-an-array/solution/215-shu-zu-zhong-de-di-kge-zui-da-yuan-s-2zkk/spm_id_from=autoNext&vd_source=755fa867364448953d97aa99efa2ec41。模式识别(使用方法):维护动态数据的最大最小值,可以考虑堆。建立容量为K的小顶堆(里面维护k个最大值)215.数组中的第K个最大元素。

2023-04-04 13:50:21 47

原创 codetop第4题 25. K 个一组翻转链表

【代码】codetop第4题 25. K 个一组翻转链表。

2023-04-03 15:58:24 37

原创 DAY63|3. 无重复字符的最长子串(滑动窗口(用左右指针来实现)、散列表)

通过关键字进行模式识别(选择什么方法)1:一旦涉及出现次数就需要用到散列表(通常出现的字符作为键,次数作为值)如何进行测试 测试的时候可以把每个子串的起始位置left 和终止位置right表示出来。逐个生成子串可以两层for循环 第一个遍历起始字符,第二个遍历终止字符。3.无重复字符的最长子串。m为可能出现的所有字符数。

2023-04-01 15:23:03 29

原创 DAY62|206反转链表(方法:双指针(三指针,有个temp暂存cur.next),超级简单 必会!!不要想复杂了)

【代码】DAY62|206反转链表(方法:双指针(三指针,有个temp暂存cur.next),超级简单 必会!!不要想复杂了)

2023-03-31 08:04:07 30

原创 DAY61|LRU缓存

将一个节点移到双向链表的头部,可以分成「删除该节点」和「在双向链表的头部添加节点」两步操作,都可以在O(1)时间内完成。存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久未使用的。在双向链表的头部添加节点、在双向链表的尾部删除节点的复杂度也为O(1)即为普通的哈希映射(HashMap),通过缓存数据的键映。关键:维护两个表,双向链表负责插入删除;访问哈希表的时间复杂度为O(1)(本题用链表因为插入方便)要求有出入顺序:首先想到。

2023-03-30 09:38:24 110

原创 DAY59|503.下一个更大元素II(用取模的方式模拟成环遍历)、42. 接雨水

建议是掌握 双指针 和单调栈,因为在面试中 写出单调栈可能 有点难度,但双指针思路更直接一些。在时间紧张的情况有,能写出双指针法也是不错的,然后可以和面试官在慢慢讨论如何优化。接雨水这道题目是 面试中特别高频的一道题,也是单调栈 应用的题目,大家好好做做。这道题和 739. 每日温度 几乎如出一辙,可以自己尝试做一做。503.下一个更大元素II。

2023-03-29 08:29:40 44

原创 DAY60|84.柱状图中最大的矩形

有了之前单调栈的铺垫,这道题目就不难了。84.柱状图中最大的矩形。

2023-03-29 07:23:16 46

原创 DAY58|单调栈739.每日温度、496.下一个更大元素 I(哈希表)

在这道题中,主要是寻找当前遍历到的元素第一个比它还要大的元素,所以为记录遍历过的元素,每次遍历都会放到单调栈中,如果每一次比上一次还要小就没有元素弹出,于是在栈中形成单调递增的形式。hashMap(如果确定了队头的最大值,则需查看队(装数组2的下标)头对应的nums2值在不在nums1中,如果在当前所确定的最大值就是要放在结果集里面的最大值)思路整理:**通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。单调栈里面是递增或者递减的。

2023-03-27 09:52:20 273

原创 DAY57|647.回文子串 、516.最长回文子序列 、动态规划总结篇

首先要考虑当i 和j 相同的情况,从递推公式:dp[i][j] = dp[i + 1][j - 1] + 2;可以看出 递推公式是计算不到 i 和j相同时候的情况。布尔类型的dp[i][j]:表示区间范围[i,j](注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。所以需要手动初始化一下,当i与j相同,那么dp[i][j]一定是等于1的,即:一个字符的回文子序列长度就是1。647.回文子串,求的是回文子串,而本题要求的是回文子序列, 大家要搞清楚两者之间的区别。

2023-03-26 09:48:41 39

原创 DAY56|583.两个字符串的删除操作 、72. 编辑距离 、编辑距离总结篇

dp[i][j] :表示以下标i-1为结尾的字符串word1,和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][j]。本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。最终我们迎来了编辑距离这道题目,之前安排题目都是为了 编辑距离做铺垫。583.两个字符串的删除操作。

2023-03-25 08:58:11 36

原创 DAY55|392.判断子序列 、115.不同的子序列

dp[1][0]=1当s为下标为0,t下标为-1(空字符串):1种方法——可以通过把s都删去来得到t(也就是t是s的子串)——推广到0这一列都可以初始化为一。dp[0][1]=0当s为下标为-1,t下标为0:0种方法,s无法得到t——推广到0这一行都需要初始化为0。dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。dp[0][0]应该是1,空字符串s,可以删除0个元素,变成空字符串t。115.不同的子序列。

2023-03-24 09:02:39 42

原创 DAY53|1143.最长公共子序列 、1035.不相交的线(看总结!!!!) 、53. 最大子序和 动态规划

因为各自数组由各组数组的顺序,这里按照dp数组中的下标顺组的值来表示题目提供的数组下标)总结:分成dp数组与题目提供的数组,在这里题目提供的数组的下标会比dp数组的下标少一个(dp[i]:包括下标i(以nums[i]为结尾)的最大连续子序列和为dp[i]。其实本题和 1143.最长公共子序列 是一模一样的,大家尝试自己做一做。体会一下本题和 718. 最长重复子数组 的区别。这道题中的下标与题目提供的数组下标是一一对应的。这道题我们用贪心做过,这次 再用dp来做一遍。1035.不相交的线。

2023-03-23 09:24:13 26

原创 DAY52|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

本题相对于昨天的动态规划:300.最长递增子序列 最大的区别在于“连续”。先尝试自己做做,感受一下区别。今天开始正式子序列系列,本题是比较简单的,感受感受一下子序列题目的思路。674.最长连续递增序列。300.最长递增子序列。718.最长重复子数组。

2023-03-22 10:57:49 82

原创 DAY51|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、总结

相对122.买卖股票的最佳时机II ,本题只需要在计算卖出操作的时候减去手续费就可以了,代码几乎是一样的,可以尝试自己做一做。本题加了一个冷冻期,状态就多了,有点难度,大家要把各个状态分清,思路才能清晰。714.买卖股票的最佳时机含手续费。309.最佳买卖股票时机含冷冻期。

2023-03-21 22:50:03 75

原创 DAY50|123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV

这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。本题是123.买卖股票的最佳时机III 的进阶版。123.买卖股票的最佳时机III。188.买卖股票的最佳时机IV。

2023-03-20 08:26:28 82

原创 DAY49|121.买卖股票的最佳时机 、122.买卖股票的最佳时机II

股票问题是一个动态规划的系列问题,今日安排的题目不多,大家可以慢慢消化。122.买卖股票的最佳时机II。121.买卖股票的最佳时机。:选择一天买入一天卖出。

2023-03-20 07:30:39 49

原创 DAY48|198.打家劫舍 、213.打家劫舍II (环形)、337.打家劫舍III(二叉树)

今天就是打家劫舍的一天,这个系列不算难,大家可以一口气拿下。第二种方法:因为是环形 所以可以设置xyz。环形问题转化成线性问题。337.打家劫舍III。213.打家劫舍II。

2023-03-18 09:57:24 96

原创 DAY44|完全背包 、 518. 零钱兑换 II 、377. 组合总和 Ⅳ

纯背包问题装满这个背着包最大价值是多少,能不能装满这个背包,两个for循环怎么颠倒都可以。纯背包问题装满这个背着包最大价值是多少,能不能装满这个背包,两个for循环怎么颠倒都可以。力扣上没有纯粹的完全背包的题目,所以大家看本篇了解一下 完全背包的理论。如果问 装满这个背包有几种方法 就要区分组合数还是排列数。后面的两道题目,都是完全背包的应用,做做感受一下。377.组合总和 Ⅳ (和 爬楼梯相似 )518.零钱兑换 II。先物品后背包 组合数。先背包后物品 排列数。

2023-03-17 10:11:46 80

原创 DAY46|139.单词拆分(set.contains(s.substring(j, i))、关于多重背包,你该了解这些!、背包问题总结篇!(二刷一定要看!))

关于 多重背包,力扣上没有相关的题目,所以今天大家的重点就是回顾一波 自己做的背包题目吧。关于多重背包,你该了解这些!

2023-03-17 10:10:57 39

原创 DAY45|70.爬楼梯 (进阶) 、322.零钱兑换(看视频对使用组合排列的分析)、279.完全平方数

本题 和 322. 零钱兑换 基本是一样的,大家先自己尝试做一做。这道题目 爬楼梯之前我们做过,这次再用完全背包的思路来分析一遍。如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。这句话结合本题 大家要好好理解。70.爬楼梯 (进阶)

2023-03-16 10:20:21 38

原创 DAY43|1049.最后一块石头的重量 II 、494. 目标和 、474.一和零

通过这道题目,大家先粗略了解,01背包,完全背包,多重背包的区别,不过不用细扣,因为后面 对于 完全背包,多重背包 还有单独讲解。大家重点理解 递推公式:dp[j] += dp[j] - nums[i]],这个公式后面的提问 我们还会用到。本题就和 昨天的 416. 分割等和子集 很像了,可以尝试先自己思考做一做。遍历背包目的:递推得到最后背包里的值。1049.最后一块石头的重量 II。494.目标和 (可以多看视频)物品重量是x个零 y个1。背包重量是m个0,y个1。

2023-03-14 09:27:39 98

原创 DAY42| 01.背包问题 二维、01.背包问题 一维、416.分割等和子集

由dp[i - 1][j - weight[i]]推出,dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]的时候不放物品i的最大价值,那么(dp[i - 1][j - weight[i]] )+ value[i] ,就是背包放物品i得到的最大价值(:由dp [i - 1] [j] 推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。dp [i - 1] [j] :物品0 — i-1放进容量为j的背包的价值和是多少。

2023-03-13 10:14:30 47

原创 DAY41|343.整数拆分 、96.不同的二叉搜索树

今天两题都挺有难度,建议大家思考一下没思路,直接看题解,第一次做,硬想很难想出来。96.不同的二叉搜索树。

2023-03-12 09:50:17 98

原创 DAY39|(动态规划步骤)62.不同路径 、63. 不同路径 II

今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下。本题大家掌握动态规划的方法就可以。数论方法 有点非主流,很难想到。63.不同路径 II。

2023-03-11 08:02:00 22

原创 DAY38(开始动态规划)|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

这道题目力扣改了题目描述了,现在的题目描述清晰很多,相当于明确说 第一步是不用花费的。很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。本题大家先自己想一想, 之后会发现,和 斐波那契数 有点关系。更改题目描述之后,相当于是 文章中 「拓展」的解法。746.使用最小花费爬楼梯。

2023-03-10 08:54:06 85

原创 DAY37|738.单调递增的数字 (分割字符串到数组、string.length-2、String.join、714. 买卖股票的最佳时机含手续费 、968.监控二叉树 、总结

可以看看贪心算法的总结,贪心本来就没啥规律,能写出个总结篇真的不容易了。本题是贪心和二叉树的一个结合,比较难,一刷大家就跳过吧。714.买卖股票的最佳时机含手续费。需要从后往前遍历(从后往前比较)968.监控二叉树 (可以跳过)738.单调递增的数字。可以在卖出时支付手续费。

2023-03-09 09:19:25 73

原创 DAY36|435. 无重叠区间(toCharArray\char转int、763.划分字母区间(寻找最远的出现位置、437. 合并区间(LinkedList

今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!不过大家把如下三题做了之后, 重叠区间 基本上差不多了。还是属于那种,做过了也就会了,没做过就很难想出来。本题相对来说就比较难了。763.划分字母区间。

2023-03-08 08:55:00 20

原创 DAY35| 860.柠檬水找零 、406.根据身高重建队列(sort(people, (a, b) ->) (二维数组)、452. 用最少数量的箭引爆气球 更新边界(Integer.compare)

*含义:**对于一个已定义的二位数组a进行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升序排序(即a[][0]),若第一个元素相等,则按照第二个元素进行升序排序(a[][1])本题是一道 重叠区间的题目,好好做一做,因为明天三道题目,都是 重叠区间。本题有点难度,和分发糖果类似,不要两头兼顾,处理好一边再处理另一边。本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。若不相等,则第一个元素进行降序排序。452.用最少数量的箭引爆气球。406.根据身高重建队列。

2023-03-07 09:07:39 30

原创 DAY34|1005.K次取反后最大化的数组和 、134. 加油站 (需要暴力优化解法)、135. 分发糖果(分边处理思想)

2、起点下标 ratings.length - 2 从右往左, 只要左边 比 右边 大,此时 左边的糖果应该 **(取本身的糖果数(符合比它左边大) 和 右边糖果数 + 1 )二者的最大值,**这样才符合 它比它左边的大,也比它右边大。本题涉及到一个思想,就是想处理好一边再处理另一边,不要两边想着一起兼顾,后面还会有题目用到这个思路。1、起点下标1 从左往右,只要 右边 比 左边 大,右边的糖果=左边 + 1。本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。2.>=0 对最小的取反。

2023-03-06 11:22:15 34

原创 DAY32|122.买卖股票的最佳时机II 、55. 跳跃游戏 、45.跳跃游戏II

如果没达到但是达到当前范围了 则currange=nextmaxrangge 再res++,遍历下一个i。贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解。局部最优:收集每天的正利润,全局最优:求得最大利润。本题解法很巧妙,大家可以看题思考一下,在看题解。

2023-03-05 10:01:29 80

原创 DAY31|(贪心算法)455.分发饼干 、376. 摆动序列 、53. 最大子序和(暴力会超时)

局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。贪心算法其实就是没有什么规律可言,所以大家了解贪心算法 就了解它没有规律的本质就够了。大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。局部最优的情况下,并记录最大的“连续和”,可以推出全局最优。学完贪心之后再去看动态规划,就会了解贪心和动规的区别。为了满足更多的小孩,就不要造成饼干尺寸的浪费。全局最优:选取最大“连续和”

2023-03-04 11:08:24 66

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除