自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营Day27|leetcode39 组合总和、leetcode40 组合总和II、leetcode131.分割回文串

思路:本题要注意start_index依旧需要,但是在循环时不需要加一,因为结果是可以重复的,另外要注意在结束条件中需要加上当sum>target时也需要返回。

2023-09-05 16:46:09 211

原创 代码随想录算法训练营Day25|leetcode216 组合总和III,leetcode17 电话号码的字母组合

思路:跟昨天的题很像,定义一个一维数组存单条路径结果,定义一个二维数组存所有结果,定义一个sum记录当前和,start_index记录下一次回溯开始的地方。这里可以有一个剪枝操作,如果在path里还没到k个数但是总和已经大于目标和了就可以直接返回。

2023-09-02 11:28:08 211

原创 代码随想录算法训练营Day24|leetcode77 组合(回溯算法经典题目)

思路:定义一个一维数组和一个二维数组,一维数组用来存储当前的结果,二维数组存储所有结果,如果一维数组大小等于k说明找到一个符合条件的,就返回。单层递归中,遍历元素,加入当前元素并调用递归元素,然后回溯。

2023-09-01 12:12:40 124 1

原创 代码随想录算法训练营Day21|530 二叉搜索树的最小绝对差、501 二叉搜索树中的众数、236. 二叉树的最近公共祖先

思路:首先明确中序遍历搜索二叉树可以得到一个有序数组,对二叉树进行中序遍历然后用双指针记录当前值和上一个值,做减法再递归得到最小值。

2023-08-31 21:37:46 90

原创 代码随想录算法训练营Day20|leetcode654 最大二叉树、leetcode617 合并二叉树、leetcode700 二叉搜索树中的搜索、leetcode98 验证二叉搜索树

思路:构造二叉树类问题都选择前序遍历,先确定中间的节点在确定左右子树的节点。递归结束条件就是数组全部遍历完,单层递归逻辑是先找到最大值以及最大值下标,然后再用切片的方法向左向右递归最后返回。

2023-08-30 21:27:21 79 1

原创 代码随想录算法训练营Day18|leetcode513 找树左下角的值、leetcode112 路经总和、leetcode106 从中序与后序遍历序列构造二叉树

题目链接思路:找左下角的值就是最后一行最左侧得值,也就是深度最大的最左边。代码逻辑为最大深度初始化为int的最小值,方便比较,定义一个result记录当前最大深度结点的值,depth记录当前遍历的深度。定义一个函数,如果走到了叶子节点,对比此时的深度和最大深度,如果此时深度更大就更新最大深度并更新result里面的值,然后分别递归左右节点,递归函数后面要进行回溯,因为找完一条路之后要回去找另外一条路。

2023-08-27 20:57:23 133 1

原创 代码随想录算法训练营Day17|leetcode110 平衡二叉树、leetcode257 二叉树的所有路径、leetcode404 左叶子之和

思路:用-1表示二叉树已经不是平衡二叉树了,在返回值不是-1的情况下,如果左右子树高度差大于一说明不是平衡二叉树,否则返回当前高度。

2023-08-27 16:37:35 62 1

原创 代码随想录算法训练营Day16|leetcode104 二叉树的最大深度,leetcode111 二叉树的最小深度,leetcode222 完全二叉树的节点个数

思路:递归法,二叉树的深度就是二叉树任意一个节点到根节点的距离,用前序排列算,二叉树的高度是二叉树任意一个,节点到叶结点的距离,用后序排列算,根节点的高度就是二叉树的最大深度 ,所以可以用后序排列。

2023-08-26 21:19:39 79

原创 代码随想录算法训练营Day15|二叉树层序遍历,leetcode226 反转二叉树,leetcode101 对称二叉树

二叉树的层序遍历也就是广度优先搜索,用队列实现,先把根节点加入队列,然后弹出,将根节点的左孩子和右孩子加入队列,再把左孩子弹出,加入左孩子的左孩子和右孩子,再把右孩子弹出,加入右孩子的左孩子和右孩子,同时有一个参数size控制弹出的节点数量。

2023-08-25 15:22:06 76 1

原创 代码随想录算法训练营Day14|二叉树基础理论

前序遍历中序遍历以及左序遍历,这三种遍历都属于深度优先搜索,最简单的使用递归的方法实现。满二叉树,完全二叉树,搜索二叉树,平衡搜索二叉树。

2023-08-22 18:42:26 35 1

原创 代码随想录算法训练营Day10|leetcode20 有效的括号、leetcode1047 删除字符串中的所有相邻重复项、leetcode150 逆波兰表达式求值

思路:有三种情况是不匹配的:左括号多,左右不匹配以及右括号多。代码实现时,遇到左括号就把相应的右括号加到栈里,遇到右括号就跟栈内元素对比,如果相同就删除,如果字符串便利完后栈不为空,或者遇到的右括号与栈顶元素不相同,或者字符串没遍历完栈就空了则说明不匹配,返回false。

2023-08-21 18:22:42 66 1

原创 代码随想录算法训练营Day10|leetcode232 用栈实现队列、leetcode225 用队列实现栈

思路:用两个栈实现,一个stack_in,一个stack_out,要出栈的放在stack_out里面,从而实现先入后出。

2023-08-20 22:19:58 65 1

原创 代码随想录算法训练营Day8|leetcode344、lecode541、剑指Offer 05、leetcode151、剑指Offer58-II

思路:双指针法,左右各一个指针,从两头开始,首尾交换,需要一个临时指针保存交换的值。

2023-08-16 17:27:32 80 1

原创 代码随想录算法训练营Day4|leetcode24 两两交换链表中的节点、leetcode19 删除链表的倒数第N个节点、面试题 02.07 链表相交、leetcode142 环形链表II

思路:使用虚拟头节点,并用两个临时指针保存当前结点的下一个以及当前结点的下一个的下一个的下一个。

2023-08-12 16:35:38 107 1

原创 代码随想录算法训练营Day3|leetcode203 移除链表元素、leetcode707 设计链表、leetcode206 反转链表

思路1:迭代法首先判断头节点是否为空,如果头节点不为空且头节点等于目标值,则head = head.next,由于移除头节点是一个连续的过程,所以判断时要用while而不是if;如果头节点不是目标值,判断头结点的next是否是目标值,如果是则头结点的next替换为头结点的next的next,如果不是,则当前值后移,继续判断下一个结点的情况。思路2:虚拟头节点。

2023-08-11 20:59:24 104

原创 代码随想录算法训练营Day2|leetcode977 有序数组的平方、leetcode 209 长度最小的子数组、leetcode 59 螺旋矩阵II

视频讲解:思路:因为数组是非降序的,所以平方后较大的数一定出现在数组的两边,所以平方后从两边开始使用双指针可以得到一个由小到大的数组。

2023-08-10 22:58:20 178 1

原创 代码随想录算法训练营Day1|leetcode704 二分查找、leetcode27 移除元素

思路:二分查找又叫折半查找,顾名思义就是从数列的初始候选区li[0:n]开始,通过对待查找的值与候选区中间值比较,每一次候选区都会折半。二分法通常有两种写法:左闭右闭和左闭右开。确定临界值的方法主要是要保证区间是合法区间以及保证原来的mid值不在新的区间里。

2023-08-09 23:24:14 267

空空如也

空空如也

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

TA关注的人

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