自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第32天

都是为了限定临界情况,一个是只有一个数,返回0,另一个是如例子[1,2],只走一步就可以,但是在for函数中,对count是加了两次的,因为实际上在for中,cover是当前i位置后面所能覆盖的范围,所以在最后break时再对count进行了+1操作。主要思路:不用常规的i++对i进行变换,这里我用了个x来记录x的变换,内层for(j)这个循环是为了选取i位置向后走的值再向后走一步能走到的最远位置,用x记录下一个位置并更新i。以下两段是我自己写的代码自己分析的。上面跟下面的代码是把。按绝对值从大到小排序。

2024-06-15 10:49:32 246

原创 代码随想录算法训练营第31天

我这个是从下开始看,可以看卡哥代码,写的更好。想不出来,直接看吧,这个题目真是复杂。

2024-06-14 17:08:22 271

原创 代码随想录算法训练营第28天

回溯的另一种写法,不用startindex。用used记录前后的不同。具体区别还没研究,目前想的是这种是每次需要全部遍历数组中的所有数。优化方法就是将用哈希表改为直接用数组,因为题目给出的数的范围是-100,100之间。可以定义一个int arr[201];也行,看卡哥思路搞清楚为什么。

2024-06-13 15:22:01 234

原创 代码随想录算法训练营第27天

在实现backtracking递归时,需要直接传递i,而不是i+1,因为元素可以不断重复。used也同样参与回溯,这个看卡哥视频更好理解,直接看题解我没看懂。注意在for中,传递的都是i,不是index,不要写成index了。作为判断条件,这个要多看几遍理解。

2024-06-08 09:24:31 278

原创 代码随想录算法训练营第25天

本题也是利用回溯思想,再之前给出的回溯模板中进行再次变化,将每一个电话键盘上的数字字符与一段string相对应,具体是用arr数组来实现的,接着一一对应之后,再之前模板for中,再嵌套一个for循环,里面又加了一层对于选择具体字符的判断。刚刚又仔细思考了下,我这段代码好像外层的一个for循环根本就没有什么用,因为这个题目是输入的数字与返回的字符串长度一样的,那第一个数字的情况遍历完从第二个开始算起,根本就凑不齐所需要的长度。上述代码第二个if内的count>n,就是剪枝操作,避免了不必要的递归。

2024-06-05 10:24:49 248

原创 代码随想录算法训练营第24天

理解:重点是上面的至多,说的比较抽象,自己想象一个数组,如1,2,3,4,n=4,k=4。设我们已经选取了1这个元素,path.size()=1,还需要的元素个数是3,为什么有个+1呢,因为包括起始位置,我们要是一个左闭的集合。如果此时到3的话,就会到3,超出了2,此时直接可以舍去,就。此时startindex位置就是2,2刚好是临界的。1,2步都较为简单理解,但是第三步很难理解。,其他的舍去,提高了效率。这个就是至多要开始的位置。剪枝优化是理解的难点。

2024-06-04 21:05:39 209

原创 代码随想录算法训练营第23天

找数组的中间值来作为根结点构造,这样就能保证树是平衡的。总体思路:采用右,中,左遍历,先修改每一部分最右端节点(不管是哪个子树)的值,然后之后的节点加上pre的值。中间的right,left用于返回,下面root->left,root->right用于接受。直接加上pre值后再进行当前节点的处理,并把pre赋值为此节点,再接着寻找左子树中的目标。其中要注意循环不变量,我这里选取的是左闭右开,始终要保持左闭右开。pre这里表示的并非一定是父结点,而是在原数组中刚好大于当前节点的节点位置。

2024-06-04 11:45:11 299

原创 代码随想录算法训练营第22天

理解这段代码的逻辑,然后分析这段代码两个if条件,如果发现了所要寻找的最近公共祖先,假设在左子树中,则,left存在,若不为空,那么直接就将left返回了,不会有下面的right,root过程,直接一层层返回,最后到第一层递归中。我这种代码比卡哥好,因为它对树的结构没有很大的改变,卡哥改变树的结构太多了,我不是很感冒。

2024-06-03 17:39:46 160

原创 代码随想录算法训练营第21天

就是全部遍历一遍,哪种遍历方法都可以,然后将数出现频率存储到map中,根据键值对存储频率排序,由大到小添加到result数组中输出。,left和right就不断向上返回,返回的其实都是同一个节点,即被记录的节点,只不过。具体代码思路,记录找到的最近公共祖先位置,然后不断将这个位置进行向上返回,这个题目比较牛,回溯的思想比较独特,我看完代码看了几遍都不能一下子理解。pre指向的是遍历的前一个节点,记录每一个前面的节点,后面-前面。这种解法是通用解法,并没有体现出二叉搜索树的特点。

2024-06-02 18:30:45 435

原创 代码随想录算法训练营第20天

我这纯是遍历所有二叉树节点,没体现出特点。

2024-05-30 00:18:00 210

原创 代码随想录算法训练营第18天

如果按卡哥传递值的写法,因为我们最后返回的result并不作为参数传递,所以最后不会被释放,会正常的被更新,而depth在递归函数中会被正常更新,在最后会被释放,但是它不必被返回,所以不用管它。要是想按我这么写,要注意传入的result得是一个引用,这样在步骤中result才会被更改。切割数组过程比较复杂,最后对左右子树分别进行递归传入的分别是以中序和后序遍历的左右子数组。也可以只传递root节点,不传递result和depth。

2024-05-26 23:31:04 194

原创 代码随想录算法训练营第17天

越来越懒了,只想过一遍,仔细总结规律慢慢研究太麻烦,耗时间,最近比较忙,期末了。每次计算左右深度时还要判断一次是否为平衡二叉树。粗略过一遍,精简代码没过细研究。过了一遍,较好理解,迭代法没看。

2024-05-24 15:10:36 147 1

原创 代码随想录算法训练营第16天

后序递归法不能够直接仿照二叉树中最大深度改写成这样在左子树遇到空直接返回,最小深度处是左右子树都为空。二叉树的最小深度和求二叉树的最大深度的差别主要在于处理左右孩子不为空的逻辑。

2024-05-23 12:26:55 975

原创 代码随想录算法训练营第15天

列的解释:列指二维数组中一个vector有几个元素。就是二维数组中第一个行,第一个vector。行的解释:行即为数组中有几个vector。这里要注意把情况分析清楚,然后只有当。时,才进入下一步左右子树的判断。

2024-05-22 10:06:01 244

原创 代码随想录算法训练营第14天

对于二叉树的统一迭代比较难

2024-05-21 12:47:27 468

原创 代码随想录算法训练营第13天

跟上节奏,自己下去有时间还要把栈,队列相关容器,deque是否连续这些是什么意思搞懂。

2024-05-20 10:15:59 153

原创 代码随想录算法训练营第十一天

这里判断时要用token[i]==“”,双引号,因为传进来的tokens数组每一个元素都是string类型。这题思路真的听巧妙的,我自己想不到。卡哥用的迭代器方法也可以。

2024-05-19 16:53:18 132 1

原创 代码随想录算法训练营第十天

比较简单吧,唯一要注意的就是在stl库中,stack的pop不会返回弹出值,要多一步存储值,不然可以写的更简单。这里和卡哥有所不同,我不知道可以直接返回。,top的实现比较复杂。

2024-05-19 15:24:41 151 1

原创 代码随想录算法训练营第九天

这题kmp算法看我笔记。看题解思路,这题比较难。

2024-05-19 14:27:21 172 1

原创 代码随想录算法训练营第八天

对于字符串的处理,常常会用整体翻转和部分翻转的思路,比较奇特。

2024-05-18 01:06:52 233

原创 代码随想录算法训练营第七天

这几天忙着赶课程进度,还参加了校足球赛,训练营这方面有所落下,慢慢赶上来,有些题目是真的难理解,解释也不行,还得自己磨,我还挺喜欢研究题目的过程,但是太耗时间了,如果可以,以后也想做研究,希望我有那个运气和天赋吧。

2024-05-16 09:40:46 607

原创 代码随想录算法训练营第六天

今天哈希表理解了一些,然后题目看过文章后也能做一做,不过感觉时间越来越紧张了,高数线代都没学习到我想的进度。

2024-05-14 00:38:16 299 1

原创 代码随想录算法训练营第四天

今天做了昨天今天的两天的题目,最后这个环形链表||是最难的。也有很多收获,对链表的理解自我感觉已经不错了。但是额外题目除了数组里面的做了部分还没做完,其他的都没做,跟不上,跟不上,再接再厉。

2024-05-11 16:50:56 272 2

原创 代码随想录算法训练营第三天

还要更专注才行,加油吧。

2024-05-11 11:19:33 245 1

原创 代码随想录算法训练营第二天

今天感觉比昨天更轻松一点,可能因为昨天理解了,今天的代码看一遍思路就能写的差不多,再接再厉。最后附上卡哥对数组的专题总结代码随想录。

2024-05-09 18:09:10 297

原创 代码随想录算法训练营第一天

对左闭右开,while的判断条件必须为while(l < r),因为r=num.size(),在排列升序数组过程中,l可能出现在最后一位,即下标为num.size()-1;因为我们的原理是右闭条件,当nums[mid]>target时,中间值:nums[mid]是不包含在我们需要查找的区间内,r=mid就是把mid作为了新需要查找的左区间的在区间外的r。此时我们原理上(l==r)时判定可能出现值,与我们设定的左闭右开区间不符合,所以可能出现l==r 和 l > r 情况,需要在while循环外再进行判断。

2024-05-08 12:12:30 593 1

空空如也

空空如也

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

TA关注的人

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