- 博客(15)
- 收藏
- 关注
原创 算法训练营day20||39.组合总和 40.组合总和II 131.分割回文串
有思路,能画出来树形结构,宽度是字符串的长度,深度是切割的次数,这么一看好像和组合又差不多了,因为在一个集合,所以需要startindex。其实和组合差不多,只是可以重复选取了,所以在startindex上做文章就可以。如果是多个集合求组合,各个集合之间互不影响,那么就不用startindex。判断回文子串时,用双指针法,回文子串应该是i到startindex的位置。先判断是不是回文子串,如果是,就把他储存起来,如果不是,就跳过。如果是一个集合求组合的话,就需要startindex。1.确定参数和返回值。
2026-04-10 11:37:01
26
原创 算法训练营day19||回溯算法理论 77.组合 216.组合总和III 17.电话号码的字母组合
所有的回溯算法都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小构成了树的宽度,递归的深度就构成了树的深度。返回值为void,传入值一定要有n和k,再传入一个startindex,干什么用呢?一般来说,回溯算法一般返回值为void,函数名起为backtracking,传入参数不确定,看情况。回溯算法也叫回溯搜索法,其实也是暴力的一种,可以解决组合,分割等问题。其实和77题差不多,只是引入了和而已,依旧使用回溯三部曲来做。这里建议去看卡哥的图,画的很清晰,剪枝优化一定要画图理解。
2026-04-09 16:32:11
40
原创 算法训练营day13||110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
遇到左叶子节点时,记录数值,然后通过递归求左子数左叶子和,和右子树左叶子之和,相加就是整个树的左叶子之和。传入根节点,记录每一条路径的path,和存放结果集的result,不需要返回值。前序遍历先处理中间节点,中间节点就是我们要记录路径上的节点,先放入path中。当找到了叶子节点时,表示终止,也就是当它的左右孩子都为空时。当当前节点为空时,表示以当前节点为根节点的树的高度为0。传入当前节点,返回以当前传入节点为根节点的树的高度。看完题解:因为要从根节点到叶子节点,所以使用。传入当前节点,返回数值之和。
2026-04-07 17:38:01
45
原创 算法训练营day12||226.翻转二叉树 101.对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度
可以使用层序遍历,两两进行比较,注意放入队列的时候,先是左节点的左孩子,然后是右节点的右孩子,然后是左节点的右孩子,然后是右节点的左孩子。要理解什么是深度,什么是高度,两种方法都可以做,一种迭代,一种递归。只需要将每一个节点的左右孩子都翻转一下就可以实现。递归前序和后续都可以做。
2026-04-02 18:14:11
22
原创 算法训练营day11||二叉树理论基础 递归遍历 迭代遍历 统一迭代 层序遍历
二叉树分为满二叉树和完全二叉树二叉搜索树,是有数值的,是有序的,左子树的值小于它的根节点的值,右子树的值大于它的根节点的值平衡二叉搜索树,是一颗空树或它的左右子树的高度差不超过1,并且左右两个子数都是一颗平衡二叉树c++中set multiset map multimap的底层实现都是平衡二叉搜索树·深度优先遍历(递归法,迭代法)·前序遍历 中左右·中序遍历 左中右·后续遍历 左右中·广度优先遍历(迭代法)·层序遍历。
2026-04-01 16:43:51
54
原创 算法训练营day9||leetcode232.用栈实现队列 225.用队列实现栈 20.有效的括号 1047.删除字符串中的所有相邻重复项
注意事项:如果第二个栈为空,在pop时,把进栈数据全部导入进来,再从出栈导出数据,如果栈不为空,则直接从出栈弹出数据。第一想法:使用栈进行匹配,但在自己写的时候很难实现,看了卡哥的视频,发现判断时,如果是左括号就把右括号压入栈。第一想法:用两个栈实现队列,将元素放入第一个栈后,出栈放入第二个栈,这个栈出栈就实现了队列。一样用栈就可以很简单的实现,但是我这里没有判断清楚边界和对比的对象。在查看栈顶元素时,为了防止破坏栈的结构,要把队头元素放入队尾。一个队列就可以实现栈,把队头元素放在队尾,注意边界的判断。
2026-03-27 17:00:19
38
原创 算法训练营day8||leetcode151.反转字符串里的单词 卡码网55.右旋转字符串 字符串总结
c++中,会提供一个string类,string类会提供size接口,用来判断字符串是否结束,就不用c语言中'\0'来判断是否结束,string类提供了很多字符串处理的相关接口,所以一般使用string字符串类的题目,想法比较简单,但实现起来不容易常用双指针法,KMP算法是字符串查找最重要的算法。
2026-03-25 17:18:47
33
原创 算法训练营day7||leetcode344.反转字符串 541.反转字符串II 卡码网54.替换数字
一定要从后往前填充,因为避免覆盖掉没有处理的字符,同时时间复杂度低,填充的时候,一个指针指向新数组,一个指针指向旧数组,两个指针同时移动,当遇到数字时,新数组指针进行填充并减减,否则不变。首先是因为,s数组的大小是会变化的,比如a1变成了anumber,2的空间变为了7,变大了原来的数组+5,所以首先要做的是扩大s数组的大小,再进行填充。这道题目首先要想到i可以2k个移动,if里面的逻辑是,当剩下的字符小于2k且大于等于k个,反转前k个字符。算法题一般可以直接用库函数解决的,都要自己实现,不然没意义。
2026-03-24 20:00:00
38
原创 算法训练营day6||leetcode454.四数相加II 383赎金信 15.三数之和 18.四数之和 总结
【代码】算法训练营day6||leetcode454.四数相加II 383赎金信 15.三数之和 18.四数之和 总结。
2026-03-24 13:39:00
23
原创 算法训练营day5||242.有效的字母异位词 349.两个数的交集 202.快乐数 1.两数之和
for循环里是C++11里引入的,if里是查找nums2中的元素是不是在nums1中,如果在,就存入result_set中,这块说明对c++基础还是没打好。优化:因为题目中字符串只有小写字符,可以定义一个数组record,大小为26这个数组用来记录字符串s里出现的次数。s字符串中出现的字母在record里加一,t则进行减一操作,如果最后record里全为0,则t和s相等。了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别。hash table,直白来讲,数组就是一张哈希表。
2026-03-23 15:27:34
42
原创 算法训练营day4||leetcode24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 07. 链表相交 142.环形链表II 总结
自己的第一想法:找到要删除的前一个节点n+1;这个节点就是链表的长度减n,当时在想,怎么知道链表的长度呢,遍历一遍不就好了嘛。这道题考察数学运算和对于链表的操作,不太好理解,推荐反复看视频和文章加深理解和记忆。对于链表的操作,涉及到增删改的操作使用虚拟头节点会方便很多,如果只是查的话都差不多。优化:使用双指针(两个方法时间复杂度都为O(n)但是我感觉还是上面这个好理解)第一想法:暴力,通过两层for循环遍历,找到相交的点返回。优化:时间复杂度为O(m+n),双指针。19.删除链表的倒数第N个节点。
2026-03-20 18:36:18
46
原创 算法训练营day3||leetcode203.移除链表元素 707.设计链表 206.反转链表
/ 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数不定义构造函数行不行,当然可以,c++会默认生成一个构造函数但是不会初始化任何变量。
2026-03-20 17:59:29
46
原创 算法训练营day2|leetcode209.长度最小的子数组,59.螺旋矩阵 区间和 数组总结
fast到slow的长度总和,如果长度总和大于target,slow++,如果等于target,记录是不是最小的子数组,如果是,返回,如果不是,slow++,如果小于target,fast++当子数组的和等于target时,不能立即返回,因为后面可能存在更短的子数组,应该是记录当前长度,并与已记录的最小长度比较,然后继续移动慢指针。第一想法:滑动窗口,一个快指针,一个慢指针,一开始fast=slow,然后fast开始走,并记录。4,若不交错,继续遍历,向下,向左,向上,操作同理。第一想法:没什么思路。
2026-03-18 17:44:33
43
原创 算法训练营day1|leetcode704.二分查找,27.移除元素 977.有序数组的平方
定义一个新的数组result,开始循环,判断左指针和右指针哪一个更大,如果左指针大于右指针,则左指针指向的值放入result[k]当中,k=nums.size();当快指针遇到要删除的元素时,慢指针不动,也就是说当快指针!= val 时,nums[slow]=nums[fast];想不到的点:nums[slow++]=nums[fast]思路:数组平方的最大值在数组的两边,不是在左边就是在右边。快指针:寻找新数组的元素,新数组就是不含目标元素的数组。第一想法:双指针 一个快指针,一个慢指针。
2026-03-17 14:09:30
59
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅