自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 day 53 | 25. K 个一组翻转链表

没啥特殊的算法,就是很难绕出来感觉。面试真的碰到了,可惜没a出来。

2023-09-09 14:16:18 142

原创 day 53 | 代码随想录结营总结

树的题目感觉收录的很全了,dfs、bfs都有涉及,缺点就是核心代码模式练多了,他题目会给你一棵树,acm模式需要根据情况自己建一颗树就比较麻烦了,普通数列还好一点,有些变形的就难了很多,这方面需要加强。然后是各种链表题,总是会被绕进去,要不就是忘记保存各种前项指针,特别是力扣有道经典题翻转k个链表(代码随想录没收录,在hot100中发现的),就经历了面试手撕的过程,结果当然是gg了。感觉有难度的地方,第一个还是kmp算法,自己开始时候看的,到两遍代码随想录,现在还是感觉有点吃力。

2023-09-09 14:13:46 98

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

本题跟接雨水的思路是差不多的,不同的是接雨水找到的凹,这个找的是凸。因此是找到左右第一个比他小的值。因此单调栈中的顺序是从栈头到栈尾单调增。需要注意的是,为了防止给定的元素是单调增或者单调减,所以需要在给定元素的头和尾两处加上两个0值。

2023-09-08 22:58:00 466

原创 day 51 |● 503.下一个更大元素II ● 42. 接雨水

显示的是循环链表,所以需要遍历两遍。用i%len(nums)保证循环两遍即可。

2023-09-08 17:41:21 173

原创 day50| ● 739. 每日温度 ● 496.下一个更大元素 I

到了单调栈的环节,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。如果求一个元素右边第一个更大元素,单调栈就是递增的(从栈头到栈底),如果求一个元素右边第一个更小元素,单调栈就是递减的。而且还不要忘记,当判断完当前的后,要把当前i也压到栈里。

2023-09-07 10:36:51 90

原创 day 49 | 647. 回文子串 ● 516.最长回文子序列

dp含义:dp如果是表示i-j的序列中回文子串的个数的话,当新来一个后只能判定出来是整体的回文,内部的无法判断,所以用bool表示整体比较恰当。递推公式:由于i,j是由i+1,j-1决定的,所以相当于是从右下开始遍历初值:开始时必然都是false。

2023-09-06 13:19:08 70

原创 day 48|● 583. 两个字符串的删除操作 ● 72. 编辑距离

dp的含义:指0开头,i- 1和j - 1为结尾的两个序列的删除最小数递推公式方面:初始化方面:前面0行和0列的初值要赋好。

2023-09-05 19:58:52 59

原创 day 47 | ● 392.判断子序列 ● 115.不同的子序列

如果用dp判断true or false无法满足,所以dp用来表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度。

2023-09-05 18:43:58 71

原创 day 46 | ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

另一种是动态规划的方式,dp【i】是以i为结尾的子序列最大和,那么就是看i - 1的dp是否大于0,大于零就加上,否则就只加自己的nums【i】两种方法,一种是滑动窗口,sum小于0就重新开始;和上一题最长公共子序列的思想一模一样。

2023-09-05 17:12:59 73

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

dp的含义是递增子序列的最后一个元素是nums【i],然后判断。

2023-09-01 16:27:32 119

原创 day 44 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

此外,在返回的时候,由于状态234都是卖出的状态,所以要比较其最大值进行返回。

2023-08-31 11:16:10 198

原创 day 43 | ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

和买卖股票3中的思路一样,只不过从两次换成了k次。● 188.买卖股票的最佳时机IV。

2023-08-30 11:25:32 326

原创 day 42 |● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II

dp数组需要记录两种状态,一种是当天时手中还持有股票,一种是当天时手中已卖出股票。

2023-08-29 16:44:29 172

原创 day 41 | ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

dp的含义是截至到这家的最高收益是多少。所以递推公式就是对比偷这家或者不偷这家的收益最多。

2023-08-29 15:45:48 71

原创 day 40 | 139. 单词拆分

首先要明确这个是求排列数,所以是先遍历背包,再遍历物品。

2023-08-27 16:34:28 92

原创 day 39 |● 322. 零钱兑换 ● 279.完全平方数

这里面有一个关键点就是要找最小值,所以要设定所有的dp的初值为一个较大的值才可以。

2023-08-27 15:12:26 91

原创 day 38 | ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

这道题就是完全背包问题,因为可以选择的数量是无限的。所以第二层的遍历顺序就是从前往后。因为是次数问题,递推公式是 += 的,初值应该设定为dp【0】 = 1,否则无法进行累加。

2023-08-24 10:31:43 67

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

与前一道分割等和子集的思路差不多,都是01背包问题。因为是采用滚动数组的形式,所以必须要倒序遍历才可以。dp[i]代表着在i的限制下最大的承重。所以另一半就是all - dp【all / 2】

2023-08-23 23:48:36 96

原创 day 36 | ● 416. 分割等和子集

因为要求是分割等和数组,所以设立一个可以容纳一半元素的背包,最后判定背包里放的是不是恰好是一半。由于是01背包+ 滚动数组的形式,所以遍历顺序肯定是倒序遍历,否则就会重复。利用滚动数组的方式进行。

2023-08-22 13:53:23 61

原创 day 35 | ● 343. 整数拆分 ● 96.不同的二叉搜索树

他是有三个数进行比较,原来的dp[i]、dp[j] * (i - j)、j*(i - j)。为什么第二个不包含第三个呢,因为我们设定的dp为至少两个数的乘积,所以dp[j]不包含j本身。

2023-08-22 13:08:28 85

原创 day 34 | ● 62.不同路径 ● 63. 不同路径 II

递归公式为上 + 左。

2023-08-20 10:51:29 162

原创 day 33| ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

同样是前面两种的最小值加上当前的cost即可。

2023-08-19 23:47:57 45

原创 day 32 | ● 738.单调递增的数字 ● 968.监控二叉树

当前一位比后一位大的时候,前一位-1, 后面所有位均变为9才可以。

2023-08-19 23:27:57 46

原创 day31 | 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

要注意这种情况,所以不是无脑选择最左边的,而是选择右区间小的那个。

2023-08-19 22:55:05 42

原创 day 30 | ● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

需要找零的有10和20两种情况。20的有限把10元的找出去,因为10只能作为20的零钱。

2023-08-19 18:52:07 36

原创 day 29 |● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

先优先解决最大的负数,所以第一次排序。如果没用完k,那么重新排序后反复迭代最小的那个数。

2023-08-17 13:16:20 31

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

由于卖出没有限制条件,所以可以将一段时间的整体收益分割成每天零碎的收益,然后加起来那些高的即可。

2023-08-17 12:30:03 93

原创 day 27 | ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

思路是照着最大的先满足,因此从后往前,满足一个就继续判定下一个。

2023-08-13 18:32:31 47

原创 day26|● 332.重新安排行程 ● 51. N皇后 ● 37. 解数独

go中的map[string]map[string]int类型需要先make一个map[string]int,然后才能赋值才可以。

2023-08-10 20:54:07 37

原创 day 25 |* 491.递增子序列 * 46.全排列 * 47.全排列 II

很不一样的一个点就是这个无法通过比较相邻的两个元素来去重,因为这个是无序的。因为单层迭代中维护了一个set来记录重复元素。

2023-08-10 12:10:47 38

原创 day 24 | ● 93.复原IP地址 ● 78.子集 ● 90.子集II

判断ip是否在0-255放在外面新建了一个逻辑函数就错了,有点没搞懂,时间来不及了,就没细看。又学到了一个新函数。

2023-08-09 23:44:24 42

原创 day 23 | ● 39. 组合总和 ● 40.组合总和II ● 131.分割回文串

不要求是否可以重复,本来以为是不需要记录index,每一次都是从零开始。发现还是需要记录,但是记录的是本身,但是不是下一个了就是。记录本身是可以下一次继续用本身,如果是每次回滚到0的话就重复了,比如一个12345数组,112和121就是重复的。

2023-08-09 22:25:00 38

原创 day 22 | ● 216.组合总和III ● 17.电话号码的字母组合

这道题与77、组合题思路相同,不过是多了一个判定条件即可。需要注意的是copy函数是空切片在前,原切片在后。

2023-08-06 23:26:39 137

原创 day 21 | 77 组合

正式进入了回溯的章节,最典型的回溯问题就是组合和排列问题了,但是用go需要注意的是,切片其实是一个引用 的类型,想要传递值的时候最好用copy一下再传递。例如本来想将path切片压入,但是如果后序对path进行改动的时候会导致前面也进行了改动,所以需要copy一个tmp压入。

2023-08-06 21:36:34 27

原创 Day 20| ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树

主要是需要注意,虽然当前节点可能出界,但是其左子节点或者右子节点并没有出界。

2023-08-06 17:35:09 35

原创 Day19 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

利用二叉搜索树的特性进行分析,先与根节点比较后盘点去左边还是右边。

2023-08-04 20:08:50 33

原创 Day 18| ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

因为是二叉搜索树,所以中序遍历时是有序的,因此只需要查看前后两个点即可,所以用上了cur和prev双指针。当count=max时,添加进去,当count大于时,res清空然后再重新加进去。后序遍历(左右中)就是天然的回溯过程,可以根据左右子树的返回值,来处理中节点的逻辑。” --------代码随想录。还有一种简单粗暴的方法就是把p和q的路径给记录到数组中,求交叉的节点就可以了。当左右都有值的时候,就说明该节点就是中间节点,否则只把左值或者右值传递上去。

2023-08-01 11:55:58 59

原创 Day 17|● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

第一次用闭包函数尝试做了,主要是对于返回值部分把握的不好。

2023-07-31 12:24:42 61

原创 day16|● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

这道题迭代法很容易做出来。

2023-07-29 21:21:48 65

原创 Day15|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

好像不知不觉就到了回溯的部分了,也就是从上往下遍历的时候,退后上一级时需要注意参数的变化,注意参数也要退回到上一层才可以。

2023-07-27 23:24:07 53

空空如也

空空如也

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

TA关注的人

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