自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HOT100刷题记录

从二叉树开始。

2026-03-24 09:58:27 17

原创 动态规划理论基础II

还是不会写 背包问题啊再看!!!

2026-03-22 13:53:57 18

原创 动态规划理论基础

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。动态规划中dp[j]是由dp[j-weight[i]]推导出来的,然后取max(dp[j], dp[j - weight[i]] + value[i])。但如果是贪心呢,每次拿物品选一个最大的或者最小的就完事了,和上一个状态没有关系。所以贪心解决不了动态规划的问题。状态转移公式(递推公式)是很重要,但动规不仅仅只有递推公式。对于动态规划问题,如下五步曲:做动规的题目,写代码之前一定要把状态

2026-02-06 09:44:38 64

原创 贪心算法基础II

但是有点没想到,找到每个位置能够cover的最大位置,只要能cover到最后的就可以true。比55难了不少,移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。和上面一道题类似啊,但是 不是那么简单就能够sort一下实现了的。和之前那个摆动序列很像,就是都是找到最大值、最小值,找到转折点。还是想要用左边sort一下,但是左边sort,求重叠的个数。但这道题目的思路是很巧妙的,所以有必要做一做,感受一下。暴力的方法很明显就是O(n^2)的,会超时。其实比较简单,但是,没想到。

2026-02-04 17:34:38 346

原创 二叉树V--进阶版本

感觉 用到回溯的确实就是搜,直接一个暴力搜索。但是 要知道backtracking咋写比较重要。还有就是剪枝的过程,有的题卡的很死。用回溯解决多了组合、切割、子集、排列问题之后,遇到这种二维矩阵还会有点不知所措。除了验证棋盘合法性的代码,省下来部分就是按照回溯法模板来的。

2026-02-04 10:48:14 16

原创 贪心算法基础

什么是贪心。唯一的难点就是如何通过局部最优,推出整体最优。那么如何能看出局部最优是否能推出整体最优呢?有没有什么固定策略或者套路呢?靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。

2026-02-02 23:37:39 15

原创 二叉树理论基础IV(从中序与后序构造二叉树-)

在回溯的过程中,必然要遍历整棵二叉树,即使已经找到结果了,依然要把其他节点遍历完,因为要使用递归函数的返回值(也就是代码中的left和right)做逻辑判断。好难,原理是知道的,就是通过后序倒着找到一个个根节点,然后从中序找到左右节点。求最小公共祖先,需要从底向上遍历,那么二叉树,只能通过后序遍历(即:回溯)实现从底向上的遍历方式。二叉树使用递归,就要想使用前中后哪种遍历方式,都可以,都不难,还可以用迭代,层次遍历。可以说这里每一步,都是有难度的,都需要对二叉树,递归和回溯有一定的理解。

2026-01-31 17:22:33 36

原创 二叉树理论基础III(左叶子之和到路径总和)

需要知道如何判断一个节点是叶子节点,且是左叶子节点。用层序遍历是非常简单的了。

2026-01-28 10:58:35 107

原创 回溯算法基础II(组合总和-复原IP地址)

因为题目要求,不能有重复的数字,但是数组中是会有重复数字出现,所以增加了去重。比之前的那个216 多了一个 ,可以选取重复的数字进行组合。如何去重,增加去重的数组,和要求条件。没有时间去写了,明天见!

2026-01-27 22:49:31 78

原创 回溯算法基础(组合-组合总和)

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。。回溯法不是高效的算法,而且不容易理解,通常是用穷举来找到所有可能。如果想要高效,可能需要增加一些剪枝的操作。而且剪枝的操作是其中比较核心的内容了。这些都很难。!!!在我看来都不简单!!!。因为回溯法解决的都是在集合中递归查找子集,。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。给出Carl总结的回溯算法模板。在回溯算法中,习惯是函数起名字为backtracking,这个起名随意。回溯算法中函数返回值一般为void。既然是树形结构,那么在。

2026-01-26 23:54:06 291

原创 二叉树理论基础II(翻转-所有路径)

其实红黑树就是一种二叉平衡搜索树,这两个树不是独立的,所以C++中map、multimap、set、multiset的底层实现机制是二叉平衡搜索树,再具体一点是红黑树。从时间复杂度上其实迭代法和递归法差不多(在不考虑函数调用开销和函数调用产生的堆栈开销),但是空间复杂度上,递归开销会大一些,因为递归需要。这么说吧,递归是方便了程序员,难为了机器(各种保存参数,各种进栈出栈)。前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。前序求的是深度,后序求的是高度。

2026-01-26 16:02:59 203

原创 二叉树理论基础

这里帮助大家确定下来递归算法的三个要素。

2026-01-22 23:12:00 773

原创 链表理论基础

循环链表可以用来解决约瑟夫环问题。链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。如果不定义构造函数使用默认构造函数的话,在初始化的时候就不能直接给变量赋值!删除操作:在C++里最好是再手动释放这个D节点,释放这块内存。添加操作:删除添加的时间复杂度都是O(1), 但是查找是O(n)复杂度。

2026-01-21 14:49:34 128

原创 栈与队列理论基础

queue队列是先进先出,stack栈是先进后出。了解一下底层实现,搞清楚所使用栈和队列和STL是什么关系栈和队列是STL(C++标准库)里面的两个数据结构。三个最为普遍的STL版本:HP STL 其他版本的C++ STL,一般是以HP STL为蓝本实现出来的,HP STL是C++ STL的第一个实现版本,而且开放源代码。P.J.Plauger STL 由P.J.Plauger参照HP STL实现出来的,被Visual C++编译器所采用,不是开源的。

2026-01-20 23:02:03 884

原创 双指针法基础

这个和之前在链表中见到过的,移除链表元素,好像。同样可以用到双指针,但是这个好像标记更简单。也是用到两个指针,一个快指针一个慢指针,这样操作,好像能比较好理解一点。他官方给出的解法很简单,但是我第一下会被绕住而且想不到。双指针的题目,在之前的全部都见过,在这里就不多写了。之前就做过,怎么还折腾了半天。

2026-01-19 17:05:17 189

原创 字符串基础

总结一下我的感觉,到目前未知还感觉比较简单,数组、哈希和字符串的逻辑感觉还是数组,并且是在空间上连续的数组,所以根据索引非常好找到在哪里。对于我自己,数组需要学到的点有:数组、二维数组、vector其实也算,set、map、unordered_set、unordered_map,字符串string。最后要学会用双指针解决问题,避免暴力。指针对于我来说就一直感觉很难,因为绕不清楚头节点、尾节点、指针指向哪里,要保留哪些指针整个链表后面才不会丢。

2026-01-19 15:27:42 836

原创 哈希表理论基础

哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。一般哈希碰撞有两种解决方法, 拉链法和线性探测法。当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。

2026-01-18 23:45:24 455

原创 数组理论基础

大家如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。像Java是没有指针的,同时也不对程序员暴露其元素的地址,寻址操作完全交给虚拟机。

2026-01-15 14:45:41 212

空空如也

空空如也

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

TA关注的人

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