自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营刷题Day27|39.组合总和、40.组合总和II、131.分割回文串

另外:vector不能作为map的key,除非重载。1、关键:StartIndex就是下一次取哪里。2、另外:双指针法是删除连续重复的元素。

2023-09-11 20:48:20 75

原创 代码随想录算法训练营刷题Day25|216.组合总和、17.电话号码的字母组合

1、关键:用回溯,不再用StartIndex+1,因为是两个集合里面找组合。1、关键:递归终止条件前判断sum是否等于targetSum。

2023-09-10 20:29:59 69

原创 代码随想录算法训练营刷题Day24|回溯法理论基础、77.组合

(2)切割问题:问切割一种字符串,使子串都是回文子串,有多少种切割方式。1、关键:易错点—回溯 path.pop_back();(5)棋盘问题:N皇后、解数独。

2023-09-10 17:43:18 78

原创 代码随想录算法训练营刷题Day23|669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

1、关键:修剪二叉搜索树注意二叉搜索树的定义。1、累加特性:遍历用 右根左。1、关键:有序数组—二分法。

2023-09-09 21:43:03 102

原创 代码随想录算法训练营刷题Day22|236.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

(5)第五种情况:左右孩子都不为空,把节点的左子树放到右子树最左边子树的左叶子节点的左边,返回被删除节点的右孩子。1、关键:在二叉搜索树中插入一个节点,这个节点一定可以放在叶子节点后面的左或者右。关键:从上往下遍历,第一个出现的在两个节点中间的节点就是两个节点的最近公共祖先。(2)第二种情况:左右孩子都为空,直接删除节点,返回null节点。(3)第三种情况:左孩子不为空,右孩子为空,删除节点,返回左节点。(4)第四种情况:右孩子不为空,左孩子为空,删除节点,返回右节点。1、可以就用二叉树的最近公共祖先。

2023-09-09 17:44:27 25

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

然后用sort自定义排序。2、由于map无法自定义value排序,所以用unordered_map,将这个数据结构拿出来为vector,1、关键:构建map统计二叉树中元素出现的次数。1、关键:利用二叉搜索树的中序遍历结果是升序。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。2、递归+回溯的经典题目。1、关键:递归、回溯。

2023-09-09 15:51:26 66

原创 代码随想录算法训练营刷题Day20|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

左子树的值小于根节点的值,右子树的值大于根节点的值。1、关键:中序遍历结果为升序,则为二叉搜索树。null 的节点将直接作为新二叉树的节点。所有左子树和右子树也必须是二叉搜索树。节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。(1)可以返回nullptr。(2)构建二叉树用递归。

2023-09-08 21:54:05 81 1

原创 代码随想录算法训练营刷题Day18|513.找树左下角的值、112. 路径总和 113.路径总和ii、106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

1、思路:用深度优先搜索(递归),遍历过程中用目标总和减去这个节点的值,到最后一个叶子节点时,如果这个和被减成了0就找到了。只有sum是targetSum且是最后一个叶子节点的才push_back到res里面;1、思路:使用层序遍历,记录最后一层的第一个节点值。(2)左右子树的长度在中序和后序遍历结果中长度一样。(1)用哈希表记录中序遍历各个节点的位置和值。(2)否则path和sum做还原的操作。(1)把路径一直保存,但是。

2023-09-07 23:07:50 66 1

原创 代码随想录算法训练营刷题Day17|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

1、关键:后序遍历求高度,前序遍历求深度。原因:后序是将左右孩子的情况返回给父节点,层层向上返回,符合高度即到叶子节点的距离;给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。因为求二叉树的最大深度本质上是求根节点的高度。1、使用前序遍历:这样才能让父节点指向子节点,从而将路径输出出来。2、高度:距离叶子节点的距离;深度:距离根节点的距离。4、本题:采用后序遍历求左右子树的高度。,返回所有从根节点到叶子节点的路径。

2023-05-31 17:57:33 49

原创 C++中Eigen线性代数库的使用

【代码】C++中Eigen线性代数库的使用。

2023-05-16 17:45:44 306

原创 代码随想录算法训练营刷题Day16|104.二叉树的最大深度 、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

1、如果是普通二叉树,用前中后序遍历、层序遍历都可以统计节点个数。1、关键:和二叉树最大深度的区别是处理左右孩子不为空的逻辑。3、关键:根节点的高度 = 二叉树的最大深度。:给出一个完全二叉树,求出该树的节点个数。1、高度:二叉树最大深度 = 根节点高度。:给定一个 n 叉树,找到其最大深度。1、高度:节点到叶子节点的距离+1。:给定一个二叉树,找出其最小深度。:给定一个二叉树,找出其最大深度。2、深度:节点到根节点的距离+1。2、代码:(普通二叉树)

2023-04-29 21:10:13 61

原创 代码随想录算法训练营刷题Day15|层序遍历10、226.翻转二叉树、101.对称二叉树 2

199:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。2、具体过程:将节点加入队列;记录当前层的节点个数;弹出有节点个数的节点,并将左右子节点加入队列。2、第一次写没写出来,思路出错,就想用层序遍历再额外加一个数据结构去写,但是有很多问题。4、注意记录每次弹出的次数,而且不能用que.size(),因为que的长度是变化的。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历):给你一个二叉树的根节点。:给你二叉树的根节点。:给你二叉树的根节点。

2023-04-23 17:31:09 102

原创 代码随想录算法训练营刷题Day14|二叉树理论基础、递归遍历(144、145、94)、迭代遍历(144、145、94)、统一迭代

/数据域int val;//指针域//构造函数。

2023-04-23 10:49:17 54

原创 代码随想录算法训练营刷题Day13|239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。1、思路:感觉很像之前做的车道检测的七次多项式系数用到的queue,不断pop和push。2、自定义一个队列:使用deque,因为queue的底层实现也是deque。:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。小顶堆:父亲元素比孩子元素小,根节点是最小元素。2、不同的定义方式得到大顶堆、小顶堆:默认大顶堆。大顶堆:父亲元素比孩子元素大,根节点是最大元素。push():从队列末加入,弹出比它小的元素。

2023-04-22 19:34:28 58

原创 代码随想录算法训练营刷题Day11|20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合、左括号必须以正确的顺序闭合、注意空字符串可被认为是有效字符串。:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。

2023-04-21 21:55:42 75

原创 代码随想录算法训练营刷题Day10|理论基础、232.用栈实现队列、225. 用队列实现栈

使用队列实现栈的下列操作:push(x) -- 元素 x 入栈;pop() -- 移除栈顶元素;top() -- 获取栈顶元素;empty() -- 返回栈是否为空。2、注意易混点:只有双头队列deque才可以push_back()、push_front()、pop_back()、pop_front()1、注意:不是要实现印象中的那些队列的函数,而是要看题意,比如这个pop还要返回值。1、注意:不是要实现印象中的那些栈的函数,而是要看题意,比如这个题pop还要返回值。2、关键:只有当out是。

2023-04-21 21:22:02 44

原创 代码随想录算法训练营刷题Day08|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。2、注意:字符串的本质就是字符串数组,这道题就是字符串数组,如果是字符串也可以用数组中可以用的一些方法来做。12、s.substr(pos,n):从索引pos开始,提取连续的n个字符,包括pos位置的字符。2、reverse函数的使用:reverse(s.begin(),s.end());返回一个指向s的引用。

2023-04-21 20:18:29 131

原创 代码随想录算法训练营刷题Day07|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和、总结

给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0

2023-04-12 00:28:05 79

原创 代码随想录算法训练营刷题Day06|哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

需要掌握——哈希表的内部实现原理、哈希函数、哈希碰撞、常见哈希表的区别、数组、set和map什么时候想到用哈希表:当我们遇到了要快速判断一个元素是否出现在集合里的时候,就要考虑哈希法1、

2023-04-11 01:00:07 120

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

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。快慢指针,快指针每次走两个节点,慢指针每次走一个节点,快慢指针如果可以相遇则说明一定有环。1、第一次写:反转链表+删除节点+反转链表,AC。:给你一个链表,删除链表的倒数第。1、交换过程:如下图所示。

2023-04-08 19:58:29 105 1

原创 代码随想录算法训练营刷题Day03|链表理论基础、203.移除链表元素、707.设计链表、206.反转链表

1、定义:链表是一种通过指针串联在一起的线性结构2、要素:节点—每个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针)。最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为头节点也就是head3、单链表:每个节点有一个指针域,只能指向节点的下一个节点4、双链表:每个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。双链表既可以向前查询也可以向后查询5、循环链表:链表首尾相连int val;//数据域//指针域。

2023-04-08 01:17:24 108 1

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

给定一个含有 n 个正整数的数组和一个正整数 target。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。②起点(startx,starty)、 螺旋矩阵当前点(i,j)、终点 n-offset (每一圈后的偏移量offset):给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。①总循环:转的圈数(如果n为奇数,还要填充螺旋矩阵中间位置)

2023-04-06 16:14:45 386

原创 代码随想录算法训练营刷题Day01|704.二分查找、27.移除元素

给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。3、vector和array的区别:vector的底层实现是array,erase是一个o(n)的操作:删除元素并前移。

2023-04-05 19:20:17 675 2

空空如也

空空如也

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

TA关注的人

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