自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

/ 很关键的一步,不要忘记清空result,之前result里的元素都失效了。} else if (pre->val == cur->val) { // 与前一个节点数值相同。if (count == maxCount) { // 如果和最大值相同,放进result中。if (count > maxCount) { // 如果计数大于最大值频率。if (pre == NULL) { // 第一个节点。= NULL){ // 中。// 记录前一个节点。pre = cur;// 更新上一个节点。

2024-09-29 00:21:00 249

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

合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。// 当t1的左节点 为空 t2左节点不为空,就赋值过去。// 当t1的右节点 为空 t2右节点不为空,就赋值过去。// 如果两棵树左节点都不为空,加入队列。// 如果两棵树右节点都不为空,加入队列。通过给定的数组构建最大二叉树,并且输出这个树的根节点。// 找到数组中最大的值和对应的下标。

2024-09-28 00:01:17 464

原创 代码随想录算法训练营第十六天 | 513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树

/ 中序区间:[inorderBegin, inorderEnd),后序区间[postorderBegin, postorderEnd)// 右后序区间,左闭右开[rightPostorderBegin, rightPostorderEnd)// 左后序区间,左闭右开[leftPostorderBegin, leftPostorderEnd)// 递归,处理节点;if (cur->right) { // 右。if (cur->left) { // 左。

2024-09-26 23:59:14 856

原创 代码随想录算法训练营第十四天 | 110.平衡二叉树、257. 二叉树的所有路径 、404.左叶子之和、 222.完全二叉树的节点个数

/ 中,中为什么写在这里,因为最后一个节点也要加入到path中。// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1。if (cur->right) { // 右。if (cur->left) { // 左。// 这才到了叶子节点。

2024-09-25 22:33:18 407

原创 代码随想录算法训练营第十三天 | 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

/ 左子树:中、 右子树:中 (逻辑处理)bool outside = compare(left->left, right->right);// 左子树:左、 右子树:右。// 左子树:右、 右子树:左。// 此时就是:左右节点都不为空,且数值相同的情况。// 当一个左子树为空,右不为空,这时并不是最低点。// 当一个右子树为空,左不为空,这时并不是最低点。// 排除了空节点,再排除数值不相同的情况。

2024-09-25 00:12:04 415

原创 代码随想录算法训练营第十二天 | 递归遍历、迭代遍历、统一迭代(先不看)、层序遍历

/ 右(空节点不入栈)if (node->left) st.push(node->left);// 这里一定要使用固定大小size,不要使用que.size(),因为que.size是不断变化的。

2024-09-24 00:24:54 244

原创 代码随想录算法训练营第十一天 |150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素

输入: ["10", "6", "9", "3", "+", "-11", " * ", "/", " * ", "17", "+", "5", "+"]// 如果push的数值大于入口元素的数值,那么就将队列后端的数值弹出,直到push的数值小于等于队列入口元素的数值为止。if (pri_que.size() > k) { // 如果堆的大小大于了K,则队列弹出,保证堆的大小一直为k。// 每次弹出的时候,比较当前要弹出的数值是否等于队列出口元素的数值,如果相等则弹出。// 滑动窗口前加入最后面的元素。

2024-09-21 23:57:03 316

原创 代码随想录算法训练营第十天 |232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。st.empty()) { // 确保栈不为空。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。push(x) -- 将一个元素放入队列的尾部。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。pop() -- 从队列首部移除元素。

2024-09-20 22:22:14 312

原创 代码随想录算法训练营第九天 |151.翻转字符串里的单词、右旋字符串、kmp以后学习

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。= 0){ //非首单词需要在单词前加空格,即转移之后的的单词后加空格,因为之前slow转以后已经++,所以直接赋值slow。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。

2024-09-19 18:26:47 296

原创 代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、替换数字

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]输入: s = "abcdefg", k = 2。

2024-09-18 16:49:12 373

原创 454.四数相加II、383. 赎金信、 15. 三数之和 、18. 四数之和

4.题目:题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?否则返回 false。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]// 去重复逻辑如果放在这里,0,0,0 的情况,可能直接导致 right<=left 了,从而漏掉了 0,0,0 这种三元组。// 对nums[i]去重。

2024-09-17 23:51:53 576

原创 代码随想录算法训练营第六天 | 242.有效的字母异位词 、 349. 两个数组的交集、 202. 快乐数、1. 两数之和

快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。4.题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。// 如果这个sum曾经出现过,说明已经陷入了无限循环了,立刻return false。// 如果没找到匹配对,就把访问过的元素和下标加入到map中。2.题目:给定两个数组,编写一个函数来计算它们的交集。

2024-09-16 23:54:45 398

原创 24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142.环形链表II

面试题 02.07. 链表相交:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。24. 两两交换链表中的节点:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。题意: 给定一个链表,返回链表开始入环的第一个节点。19.删除链表的倒数第一n个结点:给你一个链表,删除链表的倒数第。

2024-09-14 22:12:30 309

原创 203.移除链表元素、707.设计链表、206.反转链表

# 总结:1:生成虚拟头结点并用ListNode*cur记录当前结点 2:设置临时ListNode* temp用来删除结点 3:修改cur的next。(3)链表设计中寻找某个下标元素时用while(index--)即可找到对应位置,是否需要虚拟头结点自行判断,以后总结。## 虚拟头结点还是很舒服的,直接统一操作无需单独考虑头结点,另外需考虑用delete删除不要结点的空间。总结:(1)链表翻转无需虚拟结点,直接while(cur)即可,循环里面是双指针逻辑。,请你反转链表,并返回反转后的链表。

2024-09-13 15:12:52 773

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

# 这里思想是通过遍历子数组右侧下标,在遍历的同时找到大于等于target的最大的子数组,之后通过左下标进行缩小范围,最终确定最小子数组。right++){ //相当于子数组的右侧进行数组顺序遍历。//c语言特性,原因在于告知调用者返回的数组中有效元素的数量。//先找出大于等于target的子数组。// 由于非递减顺序并且可能含有负数,(两边平方后的数大)所以需要首尾指针。//标记最终子数组的大小。//求和变量,统计子数组的和。

2024-09-12 18:19:30 439

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

/返回前已经被+1了,由于数组是下标是0开头,所以返回的是最后剔除后元素下标,即新数组的元素个数。//右开默认在原数组下标+1,即等于数组个数。//记录需要剔除的数组元素的下标,这部分可以被fast替换。= val){ //判断元素是否为剔除元素。//记录更新前的数组元素的下标,可以取出当前值。#双指针(快慢指针)的应用,理解两个指针含义。,如果目标值存在返回下标,否则返回。个元素有序的(升序)整型数组。

2024-09-11 19:48:23 328

空空如也

空空如也

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

TA关注的人

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