自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 接雨水题目总结

但是上一题因为有宽度,所以我需要用特殊方法才能得到(left,right)。这道题要明白宽度是从两边向中心缩减,要想面积变大,必须存在趋势变大(即两边最低高度要变高)备忘录可以用双指针优化: 原因是不用知道最小值比较中较大的那一个是否是最大,只要比最小的那个大就选不到。与上一题的区别在于,我可以通过公式直接计算出(left,right)能够盛多少水。其实数学思路就是向左向右找两边最高值的最小值。

2024-04-17 19:58:18 237

原创 链表相关总结

虚拟头节点,cur代表被删元素前的指针,使用tmp记录被删元素,最后要把tmp释放空间。

2024-04-15 14:22:25 217

原创 动规当前总结

目标:最优化方法:使用dp table消除重复子问题的重复计算一个dp table, 一个dp函数table的大小:目前感觉如果是地图都是原大小/长度,如果是字符串,target sum, 天数,可能会需要加一个位置。

2024-04-13 13:47:23 942

原创 二叉树完整总结

的leftmost节点,没说是左/右子节点。那么其实就是第一次更新深度时的那个节点值Path Sum 路径总和1)从root开始,看是否有路径和为target的,返回bool用回溯,定义一个global2)从root开始,看是否有路径和为target, 返回所有路径标准回溯437 3) 不从root开始,看有多少条路径和为target(不一定到最底层)前缀和的一道题回溯遍历,前序位置进行加法操作,619. 合并二叉树前序位置操作,空缺直接补扁平化二叉树(将二叉树转成链表)

2024-04-13 10:21:02 499

原创 hot100| 二叉树结束· 437前缀和是好题·回溯开始

数学思路:统计‘(’ 和‘)’的数量,对于任意长度(0,len-1),都有左括号数量大于等于右括号的数量。左子树和右子树分开的,每个子树都是一次前序遍历(root规则适用)root - 左 - 右。需要用used 防止 【1,1,1】 (因为所有元素之用一次,但是每次都要从头开始选,即i= 0)审题问题,字符串的数字对应的字母相对位置不变(reverse函数的用处)有考到二分思想,和普通的二分查找一点点不同,很好的改编题。二分的情况一定是有一边是sorted的,因为懒腰斩断不在左就在右。

2024-03-19 09:46:54 854

原创 day25|● 216.组合总和III● 17.电话号码的字母组合● 39. 组合总和● 40.组合总和II● 131.分割回文串

注意题目中给我们 集合是有重复元素的,那么求出来的 组合有可能重复,但题目要求不能有重复组合。本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制。每一层代表一些option,这道题每一层的option不一样,一个小小的变形,但无太大差别。本题较难,大家先看视频来理解 分割问题,明天还会有一道分割问题,先打打基础。不合法情况:target < 0, 访问越界,本题开始涉及到一个问题了:去重。第一个特判处理不合理情况。substr分割字符串,第二个特判处理加入答案。

2024-03-18 20:22:14 151

原创 day24| 77.组合 51. N Queens 78.Subsets 79.Word Search 开启岛屿系列以及贪心!

77.不重复不复选。

2024-03-17 00:28:04 491

原创 Multi-Raft 架构, 数据Shard分区,数据迁移

PingCAP TiKV课程笔记数据是以region(也叫Raft Group)为单位进行存储的。一个region默认会有3个副本,存在不同的TiKV Node上。副本中的一个节点为leader。所有的读写流量只走leader,leader定期向follower发送心跳,进行日志复制。Region内部是一个kv map,按照key排序存储。相邻的region数据紧密相连。一个region的最大size为96M,一旦超出就自动存入新的region。

2024-03-17 00:25:18 1394 1

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

采取递归的思路,假设问题somehow被解决了,我返回的肯定是一个正确的节点,左边是合法,右边是合法,我必然是合法,那返回我自己。当我不合法时,我要去下面再找找我有没有可能是合法的,如果找到了就返回那个让我能够合法的节点,如果实在找不到,我就说呜呜呜没有只能是null啦。本题也不难,在 求二叉搜索树的最小绝对差 和 众数 那两道题目 都讲过了 双指针法,思路是一样的。这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。二叉搜索树的左子树和右子树都是二叉搜索树。538.把二叉搜索树转换为累加树。

2024-03-14 20:47:54 197 1

原创 BigTable,Percolator,MVCC初步理解

pre-write阶段,事务内确定一个primary写操作,其他的都是secondary。先要执行primary写操作,然后把primary lock锁定主操作行,然后再去异步执行次操作。commit阶段,先要去提交主操作,即在主操作行的write列加上最新timestamp。主服务器作用:1. 了解子表分配情况,监控 2. 扫描metadata table发现未分配的子表,将其分配到子表服务器 3. 负载均衡。MVCC是行锁的变种,避免了加锁操作,但是基于多版本,意思是可能读到的是历史版本。

2024-03-14 16:32:34 840 1

原创 day20|● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ●

这道题在二叉搜索树上求最小值,应注意二叉搜索树中序遍历为递增序列,最小绝对值差一定存在于连续两节点大减小,递增序列可以由中序遍历得到。这道题好在练习了二叉树双指针递归,一个后指针由函数穿参,一个前指针为全局变量,在递归函数推出前赋值实现了在cur的前位。递归思路,判断根节点值,如果大于加入节点值,那么是左子树要修改,递归左子树,只需要更新root->left所值对象就行。根节点大于所有左子树的节点值,小于所有右子树的节点值。写代码的时候有点混乱,不知道count应该记录cur还是pre,应该是cur,

2024-03-14 00:13:31 277 1

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

又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历。这次是一起操作两个二叉树了, 估计大家也没一起操作过两个二叉树,也不知道该如何一起操作,可以看视频先理解一下。陷阱在于: 二叉搜索树 要比 左子树(非左节点)的所有节点都大,比右子树(非右节点)的所有节点小。递归和迭代 都可以掌握以下,因为本题比较简单, 了解一下 二叉搜索树的特性。记住反例:【10,5,15,null, null,6,20】98.验证二叉搜索树。

2024-03-11 11:24:18 171 1

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

106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。注意审题:最后一层的leftmost节点,没说是左/右子节点。要回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。递归偏难,反而迭代简单属于模板题, 两种方法掌握一下。113 (找到答案返回应该和失败返回一样的撤销操作)本题算是比较难的二叉树题目了,大家先看视频来理解。112. 路径总和,和 113. 路径总和ii。整体采用遍历思路,更新全局变量。范围最好通过举例子确定。

2024-03-09 23:48:49 272

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

其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。没有去优化depth,每次都要向下,不知能否优化。257. 二叉树的所有路径 (优先掌握递归)由于是比较两个子树递归的结果,所以要取后。404.左叶子之和 (优先掌握递归)110.平衡二叉树 (优先掌握递归)学习了insert 函数用法。子树深度不要相差超过1。

2024-03-08 18:01:52 200 1

原创 代码随想录day15&16|● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数

这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。大家 要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。需要了解,普通二叉树 怎么求,完全二叉树又怎么求。111.二叉树的最小深度 (优先掌握递归)104.二叉树的最大深度 (优先掌握递归)先看视频讲解,会更容易一些。

2024-03-07 15:40:23 312 1

原创 hot100|动规继续

很雷同的一道题,感觉是贪心的思路?步步最优推全局最优,AC。状态:截止到第i位的严格递增序列 (第一遍for)操作:选择目前所有可行的递增序列 (第二遍for)这题涉及占位符,当坑位里还是占位符是不能计算的。这个子序列允许是非连续的(不能统一一下嘛!套了个壳子的最大子序列(非连续版)和,把最后一个元素拆出来,前面的就是子问题。仔细看看是能发现选项和状态的。

2024-03-05 21:35:30 122

原创 hot100| 二叉树+动规

确认了(base case, status, selection, dp意义(存什么东西))应该可以写出来伪代码。重点在于对于左(右)子树,maxNode(minNode)根据条件是已知的。memo 防止重复计算(我们只需要知道这个位能够被拼出来,至于被哪种方式拼出来不关注)因为设计负数,存在负负得正的情况,所以需要维护两个dp数组。que用于记录下一层所有node,循环开始的size是本次循环需要利用的节点数。不太清楚为什么回文数字放到了dp,之后回看吧。操作是不改(当前位置字母相同)和改(三种改法)

2024-03-05 16:34:14 413

原创 代码随想录day13&14|239. 滑动窗口最大值● 347.前 K 个高频元素144.二叉树的前序遍历145.二叉树的后序遍历94中序遍历

在完全二叉树中,最后一层的节点可能会集中在左边,也就是说,最后一层的右边可能没有节点。但是,如果最后一层有节点,那么它们会从左到右填充,直到填满整层或者达到树的高度。

2024-03-05 10:25:40 637

原创 代码随想录day12|双指针总结

初步对双指针题型做总结:个人理解,双指针在于将2层for降低为1次for。功能上:有快慢/读写/前后作用。

2024-03-03 09:34:28 233

原创 代码随想录day11|京东笔试+ ● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值

状态:被虐菜了ww,笔试准备的不太好,总结一下,下次努力!

2024-03-02 22:03:17 1467

原创 ● 344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字● 151.翻转字符串里的单词● 卡码网:55.右旋转字符串

建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数。建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。建议:对于线性数据结构,填充或者删除,后序处理会高效的多。替换数字,使用ascii码判断是否为数字,双指针读写指针。建议:题解中的解法如果没接触过的话,应该会想不到。

2024-02-29 00:07:15 1066

原创 ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和

本题 思路整体和 三数之和一样的,都是双指针,但写的时候 有很多小细节,需要注意,建议先看视频。建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。建议:本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。首先给特判,根据观察,必有小于0的一项,因此首位数字必小于0.

2024-02-27 22:49:32 1660

原创 代码随想录第六天|● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

建议:本题就开始考虑 什么时候用set 什么时候用数组,本题其实是使用set的好题,但是后来力扣改了题目描述和 测试用例,添加了 0 <= nums1[i], nums2[i] <= 1000 条件,所以使用数组也可以了,不过建议大家忽略这个条件。建议:本题虽然是 力扣第一题,但是还是挺难的,也是 代码随想录中 数组,set之后,使用map解决哈希问题的第一题。建议:大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。一生二,二生三,三生万物。

2024-02-26 14:47:36 1785 1

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

双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。2. 注意while 判断的顺序,先执行cur->next,再cur->next->next,算是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。注意cur->next是一般有意义的节点(好的总结不太好,之后再想想)本题没有视频讲解,大家注意 数值相同,不代表指针相同。

2024-02-24 23:48:32 1913 1

原创 代码随想录算法训练营第二天 | ● 链表理论基础 ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表

其实写代码时候已经感觉出来头节点和中间节点删除操作不一样,需要厘清状态,清除状态。建议: 这是一道考察 链表综合操作的题目,不算容易,可以练一练 使用虚拟头结点。建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。链表常用操作--虚拟头节点 (删除思路,前一节点指向后一节点)尊嘟没有注意过链表节点的定义诶,补上补上。链表三要素:prev, data, next。状态:今天依然是美丽的精神状态哈哈哈哈。基础,以及链表和数组的区别。链表分类:单/双/循环。基础链表题,双指针;

2024-02-24 00:11:20 1749

原创 代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

数组还需要注意区间,合法区间的概念很重要,注意n/2都取下界,所以一般左闭,右边开不开保持一致就行,哈哈,熟练就好。: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。有点小粗心:走位题要考虑循环最后落脚在哪(因为会有跳出循环到判断,要知道下一次从哪里走)这道题主要是区间范围。本人认为,仅这道题而言(避免underfitting),采用滑动窗口是出于观察。: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。暴力:枚举所有区间情况求和,比大小。

2024-02-22 11:55:05 2502 1

原创 代码随想录算法训练营第一天 | 数组理论基础,704. 二分查找,27. 移除元素

第一个for循环需要更新数组,注意循环判断i

2024-02-21 11:54:19 2802

空空如也

空空如也

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

TA关注的人

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