自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第五十一天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

无。

2023-03-23 21:12:27 130 1

原创 代码随想录算法训练营第五十天 | 123. 买卖股票的最佳时机 III、188.买卖股票的最佳时机IV

操作二: 第 i 天第j次买入股票, 那么 dp[i][j][1] = dp[i-1][j-1][0] - prices[i]操作二: 第 i 天卖出了股票, 那么 dp[i][j][0] = dp[i-1][j][1] + prices[i]操作一: 第 i 天没有操作, 那么 dp[i][j][0] = dp[i-1][j][0]操作一: 第 i 天没有操作, 那么 dp[i][j][1] = dp[i-1][j][1]题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

2023-03-22 14:59:56 121

原创 代码随想录算法训练营第四十九天 | 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [7,1,5,3,6,4]

2023-03-21 23:10:56 160

原创 代码随想录算法训练营第四十八天 | 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。给定二叉树的 root。

2023-03-20 12:32:22 374

原创 代码随想录算法训练营第四十四天 | 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

无。

2023-03-19 18:18:39 307

原创 代码随想录算法训练营第四十三天 | 1049. 最后一块石头的重量 II 、 494. 目标和 、474.一和零

1049. 最后一块石头的重量 II题目:有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量。如果没有石头剩下,就返回 0。

2023-03-16 11:12:54 94

原创 代码随想录算法训练营第四十二天 | 01背包问题,你该了解这些! 、01背包问题,你该了解这些! 滚动数组、416. 分割等和子集

确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组。

2023-03-15 17:03:56 85

原创 代码随想录算法训练营第四十一天 | 343. 整数拆分 、96.不同的二叉搜索树

感觉这是一类 dp 题目的思考方式, 虽然仍然是 5 步思考, 但dp数组(dp table)以及下标的含义与昨天不同。

2023-03-13 13:55:28 73

原创 代码随想录算法训练营第三十九天 | 62.不同路径 、63. 不同路径 II

确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组。

2023-03-11 09:24:26 342

原创 代码随想录算法训练营第三十八天 | 理论基础 、509. 斐波那契数 、70. 爬楼梯 、746. 使用最小花费爬楼梯

确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组。

2023-03-10 23:14:16 134

原创 代码随想录算法训练营第三十七天 | 738.单调递增的数字 、968.监控二叉树 、贪心总结

主要还是看Carl哥的贪心算法总结篇, 贪心算法比较灵活, 没有固定套路, 需要多久练习。

2023-03-09 16:10:57 110

原创 代码随想录算法训练营第三十六天 | 435. 无重叠区间、763.划分字母区间、 56. 合并区间

重叠区间的贪心基本要先排序。

2023-03-08 15:50:56 77

原创 代码随想录算法训练营第三十五天 | 860. 柠檬水找零、 406.根据身高重建队列 、 452. 用最少数量的箭引爆气球

仍然无法厘清局部和全局的关系, 可能还需要练习.

2023-03-07 15:46:22 57

原创 代码随想录算法训练营第三十四天 | 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

贪心算法在于找出局部解和全局解, 找局部最优解这部分仍然比较匮乏, 需要多练习. 而进入的 LC135 则提供了一个新的思路.

2023-03-06 20:42:53 53

原创 代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

贪心没有固定套路, 很难把握到底怎么写. 多练吧.

2023-03-04 14:35:20 41

原创 代码随想录算法训练营第三十一天 | 贪心算法理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和

刚刚开始学习贪心, 有点摸不清门路, 需要多锻炼。

2023-03-03 22:51:34 52

原创 代码随想录算法训练营第三十天 | 回溯法理论基础、332.重新安排行程、51. N皇后、37. 解数独

三道题都是思路贵于实践的题目, 有的有其他的更好的思路, 用回溯强解也行, 可以拓宽视野.

2023-03-03 19:14:21 56

原创 代码随想录算法训练营第二十九天 | 491.递增子序列 、46.全排列、47.全排列 II

同一层内被使用的该类元素不能重复使用,一般要在每层循环遍历开始时用 Map 去重, 限制同类元素使用保证在 nums = [1,1,2] 选全排列时不会出现两次[1,1,2](第一个1选一次, 第二个1再选一次)同时也要保证数组的元素在path中不被重复使用, 一般在外部用 boolean[] isUsed 去重, 在进入递归时置为 true, 退出递归后置为false保证在 nums = [1,1,2] 选全排列时的结果中不会出现[1,1,1]

2023-03-01 12:15:44 98

原创 代码随想录算法训练营第二十八天 | 93.复原IP地址 、78.子集、90.子集II

切割问题就可以使用回溯搜索法把所有可能性搜出来回溯算法的过程能得到什么?回溯算法的过程正好就是获得子集的过程.

2023-02-28 14:16:19 89

原创 代码随想录算法训练营第二十七天 | 39. 组合总和、40.组合总和II、131.分割回文串

回溯要分清楚纵向遍历和横向遍历的对象。

2023-02-27 15:41:25 46

原创 代码随想录算法训练营第二十五天 | 216. 组合总和 III、17.电话号码的字母组合

1.记住模板2.考虑剪枝3.对于回溯的遍历部分仍然不熟练, 需要多练习。

2023-02-26 00:00:28 106

原创 代码随想录算法训练营第二十四天 | 理论基础、77. 组合

记住回溯的模板:void backtracking(参数) {if(终止条件) {存放结果;return;} for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表);// 递归 回溯,撤销处理结果 } }考虑一下剪枝。

2023-02-23 23:28:07 74

原创 代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

2023-02-22 22:09:42 74

原创 代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点

二叉搜索树递归的时候, 什么时候要, 什么时候要直接retrun XXX?需要好好体会. 这里先下一个草率的结论:题解要求返回的是某个节点, 就直接retrun XXX;要返回的是一个经过某些操作的树的时候, 就要另外, 二叉搜索树在使用时候, 应当加上类似的判断, 以便将时间复杂度降到 O(log n).

2023-02-22 09:43:11 59

原创 代码随想录算法训练营第二十一天 | 654. 最大二叉树、617. 合并二叉树、236. 二叉树的最近公共祖先

既然是搜索树, 它中序遍历就是有序的公共祖先先想一下后序遍历。

2023-02-21 13:56:47 41

原创 代码随想录算法训练营第二十天 | 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树

一些题目没接触过是很难知道怎么写的, 如 lc98, 所以要多拓宽一下视野.

2023-02-20 10:48:53 88

原创 代码随想录算法训练营第十八天 | 513.找树左下角的值、112. 路径总和 、113. 路径总和 II、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

今天的题目感觉难道骤升, 应该是不熟悉题目的缘故, 建议明天复习.

2023-02-18 18:36:07 22

原创 代码随想录算法训练营第十七天 | 110.平衡二叉树、 257. 二叉树的所有路径、404.左叶子之和

当需要字符串拼接时, 使用 StringBuilder 可以更快速.另外, 这几道题虽然都是 Easy, 但是都是没完整思路的题目, 还需增加广度.

2023-02-17 11:47:50 31

原创 代码随想录算法训练营第十六天 | 104.二叉树的最大深度、559.n叉树的最大深度、 111.二叉树的最小深度、222.完全二叉树的节点个数

二叉树的递归有一定的套路, 首先要确定好是要进行哪种遍历.

2023-02-16 13:51:38 20

原创 代码随想录算法训练营第十五天 | 层序遍历、226.翻转二叉树、 101. 对称二叉树

二叉树层次遍历是有一定固定套路

2023-02-15 11:56:53 46

原创 代码随想录算法训练营第十四天 | 二叉树理论基础,二叉树递归遍历

二叉树基础和递归遍历

2023-02-14 09:41:51 42

原创 代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素

单独栈/队列问题很复杂,需要多练习;top k 问题应该要去想大顶堆。

2023-02-13 11:08:22 24

原创 代码随想录算法训练营第十一天 | 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

利用栈的后进先出的性质,可以帮我们简化很多操作。

2023-02-11 20:24:25 28

原创 代码随想录算法训练营第十天 | 232.用栈实现队列、225. 用队列实现栈

无总结,今日权当休息。

2023-02-10 17:06:55 20

原创 代码随想录算法训练营第九天 | 28. 实现 strStr()、 459.重复的子字符串

KMP 比较抽象,要理解,多复习。

2023-02-09 20:29:09 41

原创 代码随想录算法训练营第八天 | 344. 反转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

由于Java对String的设计,不用内置方法操作Sting会非常繁琐,我觉得必须记住常用的Api。

2023-02-09 01:07:30 129

原创 代码随想录算法训练营第七天 | 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

今日的题目前两道是传统的哈希表题目,后两道则更有些双指针的味道。而上面的15. 三数之和18. 四数之和对于我而言,原本以为是简单多一个嵌套,没想到重点是去重和剪枝。这也警告我,相似的问题,哪怕思路一致,但是边界的确定往往更重要。

2023-02-07 22:15:27 50

原创 代码随想录算法训练营第六天 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。

2023-02-06 16:51:26 42

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II

链表迭代法有其较为固定的模板,而递归法则要从最浅层思考,后面的层就当它是已经完成题解要求的部分去使用。环形链表主要还是要厘清数学关系,然后就是双指针、快慢指针了。

2023-02-04 16:55:48 29

原创 代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表

一般而言链表题都有迭代和递归两种写法,迭代法模式比较固定,一般就是在用prevcurrnext三个指针分别指向要处理的节点的前一个节点,要处理的节点、要处理的节点的后一个节点,在这基础上进行增加或减少指针。递归法也是链表题的重要部分,应当勤加练习。

2023-02-03 15:18:28 220

空空如也

空空如也

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

TA关注的人

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