自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (C++回溯01) 组合

n - (k - path.size()) + 1 为当前可以组合的最后一个位置。n - (k - path.size()) 意思是去掉可选取元素个数后的位置。公式:n - (k - path.size()) + 1。k - path.size() 意思是还可选取多少元素。

2024-07-24 23:13:57 305

原创 (C++二叉树08) 二叉搜索树相关题目

【代码】(C++二叉树08) 二叉搜索树相关题目。

2024-07-23 07:29:29 224

原创 (C++二叉树06) 二叉搜索树的最小绝对查和众数 二叉树的最近公共祖先

【代码】(C++二叉树06) 二叉搜索树的最小绝对查和众数 二叉树的最近公共祖先。

2024-07-20 23:00:53 349

原创 (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树

【代码】(C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树。

2024-07-19 22:23:01 263

原创 (C++二叉树04) 找左下角的值 路径总和I和II

【代码】(C++二叉树04)

2024-07-18 22:57:54 157

原创 (C++二叉树03) 平衡二叉树 二叉树的所有路径 左叶子之和 完全二叉树的节点个数

【代码】(C++二叉树03)

2024-07-17 21:42:04 247

原创 (C++二叉树02) 翻转二叉树 对称二叉树 二叉树的深度

【代码】(C++二叉树02) 翻转二叉树 对称二叉树 二叉树的深度。

2024-07-17 20:43:45 352

原创 (C++二叉树01) 二叉树的前中后序递归以及非递归遍历 层序遍历

【代码】(C++二叉树01) 二叉树的前中后序递归以及非递归遍历 层序遍历。

2024-07-15 22:39:33 196

原创 (C++栈与队列02) 栈的应用 单调队列

时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(k)

2024-07-13 22:47:04 355

原创 (C++01 栈与队列) 栈与队列的实现,栈的应用

时间复杂度:push和empty操作为O(1),pop和top为O(n)时间复杂度:push和empty为O(1),pop和peek为O(n)空间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)

2024-07-12 22:29:46 339

原创 (C++字符串02) 反转字符串中的单词

时间复杂度:O(n)空间复杂度:O(1)

2024-07-11 22:10:28 353

原创 (C++字符串01) 反转字符串 反转字符串II 替换数字

string s;时间复杂度:O(n)空间复杂度:O(1)

2024-07-10 23:04:38 241

原创 (C++哈希02) 四数相加 赎金信

时间复杂度:O(n*n)空间复杂度:O(n*n)时间复杂度:O(n)空间复杂度:O(1)

2024-07-09 22:32:50 215

原创 (C++哈希表01)

时间复杂度:O(n + m);时间复杂度:O(logn)空间复杂度:O(logn)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)

2024-07-08 23:32:11 377

原创 (C++链表02) 链表双指针

public:= NULL) {时间复杂度:O(n)空间复杂度:O(1)

2024-07-07 23:46:34 202

原创 (C++链表01) 移除链表元素

时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)

2024-07-05 21:30:01 429

原创 (c++数组02) 双指针 滑动窗口

时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(1)

2024-07-04 23:45:36 190

原创 (C++ 数组) 二分查找 搜索插入位置 移除元素

时间复杂度:O(logn)时间复杂度:O(logn)时间复杂度:O(n)空间复杂度:O(1)

2024-07-03 23:10:41 335

原创 (贪心05) 无重叠区间 划分字母区间 合并区间

按照区间左边界排序,然后从左开始遍历,每遍历到一个区间就要保证该区间之前的集合为不重叠区间(贪心,局部最优解)。统计不重叠区间,最后区间总和减去不重叠区间个数就等于重叠区间个数。难点在于如何把新遍历到的区间整合为不重叠,分情况讨论。在遍历的过程中相当于是要找每一个字母的边界,此时前面出现过所有字母,最远也就到这个边界了。时间复杂度:O(nlogn);时间复杂度:O(nlogn)时间复杂度:O(nlogn)空间复杂度:O(1);空间复杂度:O(1)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)

2024-05-10 23:05:01 575

原创 (贪心04) 柠檬水找零 根据身高重建队列 用最少数量的箭引爆气球

3. 收 20 美元,找零 15 的话有两种找零方式,第一种是一张 10 美元加一张 5 美元,第二种是三张 5 美元,局部最优解是优先使用第一种方式(5 美元找零可以适用两种情况,而 10 美元找零只适用于一种情况)一共有三种付款金额,因为 20 美元不会用来找零,所以只需维护 5 和10 两种金额的数量即可。2. 收 10 美元, 钱包多一张 10 美元,同时失去一张 5 美元。时间复杂度:O(nlogn)时间复杂度:O(nlogn)空间复杂度:O(1)空间复杂度:O(1)空间复杂度:O(1)

2024-05-10 00:09:43 438

原创 (贪心03) K次取反后最大化的数组和 加油站 分发糖果

遍历 rest ,记录从 0 到 i 的总和 count,若count 小于 0 ,说明 0 到 i 之间都不能作为起始位置,需要从 i + 1 开始重新统计 rest 的总和,并用 index记录 i + 1的值。2. 若左孩子小于等于右孩子,左孩子的糖果数量设为一,这里同样要和上面从左到右遍历得出的糖果值比较,取大者,因为糖果数量大于等于一,所以该情况不予管理。1. 若左孩子大于右孩子,左孩子的糖果数量是右孩子加一,这里要和上面从左到右遍历得出的糖果值比较,取大者。空间复杂度:O(n);

2024-05-09 01:09:28 312

原创 (贪心01) 分发饼干 摆动序列 最大子数组和

只要连续和还是正数就会对后面的元素起到增大总和的作用。所以只要连续和为正数我们就保留。时间复杂度:O(nlogn) 和排序有关。1. 上下坡中有平坡。2. 数组的首尾两端。3. 单调坡中有平坡。时间复杂度:O(n);空间复杂度:O(1);空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)

2024-05-07 17:23:04 357

原创 (回溯06) 重新安排行程

【代码】(回溯06) 重新安排行程。

2024-05-05 22:56:26 142

原创 (回溯05) 非递减子序列 全排列 全排列II

该题新加入 set 集合用来去重,判断当前层是否有重复元素。时间复杂度:O(n!利用数组去掉已经选出来的元素。时间复杂度:O(n!时间复杂度:O(n*空间复杂度:O(n)空间复杂度:O(n)空间复杂度:O(n)

2024-05-04 18:29:35 248

原创 (回溯04) 复原 IP 地址 子集

记:可以用substring() 分割 String ,然后用 StringBuilder 加快拼接。= index && nums[i] == nums[i - 1] 一条语句就可以去重。为什么没用辅助数组去重:因为重复的组合只有在 i 不等于 index 时才会出现。这题相比较之前的题很简单。空间复杂度:O(n)时间复杂度:O(n*空间复杂度:O(n)时间复杂度:O(n*空间复杂度:O(n)

2024-05-04 00:08:16 242

原创 (回溯03) 组合总和

回溯函数 backtracking 没有返回值,参数三个:原数组 candidates ,目标值 target ,记录当前取元素的起始下标 index。取到元素 i 后,下一个元素继续从下标 i 取元素,因为题目中说可以重复取元素;当 count 值等于 target 时,说明当前所取元素满足题目,加入到 result 集合中,然后返回。还有一个终止条件,就是当 count 值大于 target 也终止当前回溯,这个我加入到第三步。空间复杂度:O(target)时间复杂度:O(n *空间复杂度:O(n)

2024-04-30 23:26:44 247

原创 (二叉树day08) 二叉搜索树的最近公共祖先

第四种:目标节点左右孩子都在,将目标结点左孩子插入到目标结点右孩子的最左边结点的左孩子处,返回目标结点的右孩子。第二种:目标结点左孩子为空,右孩子不为空,返回右孩子,即目标结点被删除,右孩子补位。第三种:目标结点右孩子为空,左孩子不为空,返回左孩子,即目标结点被删除,左孩子补位。返回的是目标结点,参数是当前结点以及 p,val 值,直接用题目给的函数做递归。返回的是目标结点,参数是当前结点以及p,q结点,直接用题目给的函数做递归。说明p,q结点的最近公共祖先在当前结点的右子树上;

2024-04-28 16:40:38 738

原创 (回溯02) 组合总和iii 电话号码的字母组合

当 path.size() == k 时,说明已经取了 k 个数,若 count == n 说明这 k 个数相加等于 n ,符合条件,将 path 加入 result 集中,若不满足 count == n ,则直接终止本层取数。k 为要取多少个数, n 为取得数的相加之和(k 和 n 为题目已给出),startindex 为当前层取数的起始位置。时间复杂度:O(3^m * 4^n) ,其中 m 是对应四个字母的数字个数,n 是对应三个字母的数字个数。定义 path 集合用来存放当前结果。

2024-04-27 23:34:16 1030

原创 (回溯01) 组合

本层取数下标 i 应从 startindex 开始,到 n 结束;下一层取数应从 i 开始,到 n 结束,记住:函数回溯时,path 也应该回溯,回到本层取完数后的状态。当path集合里面的元素个数等于 k 时,说明已经取了 k 个数了,可以将结果保存在 result 中,并回溯找下一条结果。递归参数定义三个变量,n 为集合 n ,k 为 取多少个数, startindex 为本层递归起始取数位置。定义 result 集合来结收条件结果。将题目问题抽象为 n叉树。时间复杂度:O(n*空间复杂度:O(n)

2024-04-27 21:55:45 255

原创 (二叉树07) 二叉搜索树的最小绝对值

【代码】(二叉树07) 二叉搜索树的最小绝对值。

2024-04-25 19:17:13 251 1

原创 (二叉树06) 最大二叉树

【代码】(二叉树06) 最大二叉树。

2024-04-22 23:47:18 148

原创 (二叉树05) 找树左下角的值 路径总和

【代码】(二叉树05) 找树左下角的值 路径总和。

2024-04-22 21:59:12 185 2

原创 (二叉树04) 平衡二叉树 二叉树的所有路径 左叶子之和

先将结点值加入路径中,然后判断是不是叶子结点,若是,则将路径加入集合,若不是,则将"->"加入路径。(先加值,再加符号)上面的代码都是每递归一次创建一个新的StringBuilder对像,即路径传递的是值,而不是引用,无需路径回溯,以下代码是引用传递。

2024-04-21 16:01:08 359 3

原创 (二叉树day03) 二叉树的最大深度 二叉树的最小深度 完全二叉树的个数

【代码】(二叉树day03) 二叉树的最大深度 二叉树的最小深度 完全二叉树的个数。

2024-04-19 23:50:34 221

原创 (二叉树day2) 层序遍历 翻转二叉树

翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。

2024-04-18 22:57:42 412 2

原创 (栈与队列) 用栈模拟队列 用队列模拟栈

push操作:首先将栈 stack1 的元素全部输入到栈 stack2 ,然后将新元素压入栈 stack1 中,最后再将栈 stack2 中的元素重新压入栈 stack1,这样就实现了新加的元素一直处于 stack1 栈底,而 stack1 栈顶元素则是最开始的添加的元素。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(时间复杂度:push操作为O(n),每次循环两次栈,其余操作为O(1)时间复杂度:push操作是O(n),其余操作复杂度是o(1)// 返回 False。

2024-04-16 22:45:26 877 1

原创 (二叉树01) 二叉树前中后序递归遍历和迭代遍历以及统一迭代

二叉树遍历

2024-04-16 21:51:34 215 1

原创 代码随想录第七天 (哈希)四数相加II 赎金信 三数之和

题目描述:给你四个整数数组 、、 和 ,数组长度都是 ,请你计算有多少个元组 能满足:将 nums1 数组与 nums2 数组中两两元素相加之和放入 map 中,key 记录值,value 记录值出现的次数。然后判断 nums3 数组与 nums4 数组中两两元素相加之和的相反数是否出现在 map 映射中,如果出现,那么 map 所记录的 value 值就等价于有多少个符合题意的元组,遍历结束,将所有的符合的 value 值相加,返回结果时间复杂度:O() 空间复杂度:O()题目描述:给你两个

2024-04-09 22:43:58 395

原创 代码随想录第六天 (哈希) 有效的字母异位词 两个数组的交集 快乐数 两数之和

题目描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。

2024-04-08 22:44:41 967

原创 代码随想录第四天 两两交换链表中的节点 删除链表的倒数第N个节点

题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2024-04-06 22:52:33 515 1

空空如也

空空如也

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

TA关注的人

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