基础练习
FangYwang
这个作者很懒,什么都没留下…
展开
-
【代码随想录37期】Day27 组合总和 40.组合总和II 131.分割回文串
【代码】【代码随想录37期】Day27 组合总和 40.组合总和II 131.分割回文串。原创 2024-06-04 01:32:04 · 397 阅读 · 0 评论 -
【代码随想录37期】Day25 组合总和III 、17.电话号码的字母组合
【代码】【代码随想录37期】Day25 组合总和III 、17.电话号码的字母组合。原创 2024-06-02 23:33:34 · 166 阅读 · 0 评论 -
【代码随想录37期】Day24 回溯 组合
回溯是一种搜索方式,通常通过穷举来解决问题,核心思想是从一个初始状态出发、暴力搜索所有可能的方案,遇到正确的解法则记录下来,直到结束,这是一个回溯:时间回溯!原创 2024-06-02 23:31:21 · 214 阅读 · 0 评论 -
【代码随想录37期】Day23 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
【代码】【代码随想录37期】Day23 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树。原创 2024-06-02 23:28:47 · 135 阅读 · 0 评论 -
【代码随想录37期】Day22 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
【代码】【代码随想录37期】Day22 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点。原创 2024-06-02 23:25:46 · 197 阅读 · 0 评论 -
【代码随想录37期】Day21 530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先
【代码】【代码随想录37期】Day21 530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先。原创 2024-06-02 23:21:22 · 107 阅读 · 0 评论 -
【代码随想录37期】Day20 最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树
【代码】【代码随想录37期】Day19 最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树。原创 2024-06-02 23:16:18 · 234 阅读 · 0 评论 -
【代码随想录37期】Day18 找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树
【代码】【代码随想录37期】Day18 找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树。原创 2024-05-27 01:36:58 · 282 阅读 · 0 评论 -
【代码随想录37期】Day17 平衡二叉树、二叉树的所有路径、左叶子之和
平衡二叉树int traversal(TreeNode* cur, int depth){ if (!cur) return depth; int left_depth = traversal(cur->left, depth + 1); int right_depth = traversal(cur->right, depth + 1); if (left_depth == -1 || right_depth == -1) r原创 2024-05-24 13:47:47 · 455 阅读 · 0 评论 -
【代码随想录37期】Day16 二叉树的最大深度、二叉树的最小深度、完全二叉树的节点个数
注意depth不好直接作为返回值,使用全局变量ret替代之。原创 2024-05-24 01:16:18 · 204 阅读 · 0 评论 -
【代码随想录37期】Day15 层序遍历、翻转二叉树、对称二叉树
代码随想录102. 二叉树的层序遍历 - 力扣(LeetCode)107. 二叉树的层序遍历 II - 力扣(LeetCode)199. 二叉树的右视图 - 力扣(LeetCode)637. 二叉树的层平均值 - 力扣(LeetCode)429. N 叉树的层序遍历 - 力扣(LeetCode)515. 在每个树行中找最大值 - 力扣(LeetCode)116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode)104. 二叉树的最大深度 - 力扣(LeetCode)力扣(Lee原创 2024-05-22 13:49:24 · 224 阅读 · 0 评论 -
【代码随想录37期】Day14 二叉树的前序遍历、二叉树的中序遍历、二叉树的后序遍历
广度搜索:使用队列来实现,这也是队列先进先出的特点所决定的,因为需要先进先出的结构,才能一层一层的来遍历二叉树。,也就说前中后序遍历的逻辑其实都是可以借助栈使用递归的方式来实现的。原创 2024-05-21 13:42:46 · 504 阅读 · 0 评论 -
【代码随想录37期】Day13 滑动窗口最大值、前K个高频元素
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。如果使用大顶堆,队列的特点是只能从队头出,那样最大的元素就会被弹出,我们需要的就是最大的K个元素,所以应该使用小顶堆把最小的元素弹出。我们在力扣写代码时,是在solution类里面,我们直接在这里面写的函数是该类的成员函数,非静态成员函数有一个。,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,使用容器适配器:队列。原创 2024-05-20 13:17:00 · 691 阅读 · 0 评论 -
【代码随想录37期】Day11 有效的括号、删除字符串中的所有相邻重复项、逆波兰表达式求值
3)遇到运算符“+”,将a和b出栈,执行a+b的操作,得到结果d=a+b,再将d入栈(0位置)两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。两个元素出栈,执行运算,得到的结果再入栈的原则来进行处理,那么ab+c。Notation,RPN,或逆波兰记法),也叫后缀表达式(将。经过以上运算,计算机就可以得到(a+b)*c的运算结果e了。,如果当前字符为变量或者为数字,则压栈,如果是运算符,则将。c的操作,得到结果e,再将e入栈(0位置)”,将d和c出栈,执行d。4)c入栈(1位置)原创 2024-05-19 19:40:58 · 386 阅读 · 0 评论 -
【代码随想录37期】第二周总结
resize是为了把后面冗余的部分去掉至于新的大小为什么是slow,看slow的循环即可,slow最后多一个slow++,数值上正好是size的大小(大小为slow的下标是0 ~ slow-1)原创 2024-05-19 19:38:18 · 720 阅读 · 0 评论 -
【代码随想录37期】Day10 用栈实现队列、用队列实现栈
v3.0:第三版代码,去掉了队列2的使用,将队列除了尾部元素之外重新入队,即可将原本的队尾元素移动到队首,从而去掉该元素。初版代码:根据自己思路实现的,确保pop时一个队列为空,然后将另一个队列的元素都移动到该队列,只留下最后一个元素。第二版代码,使用了q1 = q2;再清空q2的做法,避免了很多q1和q2来回交换的做法,明确了q1和q2的职责。原创 2024-05-17 13:06:40 · 312 阅读 · 0 评论 -
【代码随想录37期】Day08 反转字符串、反转字符串Ⅱ、替换数字、反转字符串里面的单词、右旋转字符串
下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。使用整体反转+局部反转就可以实现反转单词顺序的目的。而使用局部反转+整体反转就可以实现反转字母顺序的目的。问题:1. erase与for循环嵌套时间复杂度高。注意的一点是reverse是左闭右开。原创 2024-05-15 22:00:24 · 457 阅读 · 0 评论 -
【代码随想录37期】Day07四数相加Ⅱ、赎金信、三数之和、四数之和
【代码】【代码随想录37期】Day07四数相加Ⅱ、赎金信、三数之和、四数之和。原创 2024-05-14 22:53:02 · 190 阅读 · 0 评论 -
【代码随想录37期】Day06 有效的字母异位词、两个数组的交集、快乐数、两数之和
【代码】【代码随想录37期】Day06 有效的字母异位词、两个数组的交集、快乐数、两数之和。原创 2024-05-13 14:06:19 · 217 阅读 · 0 评论 -
【代码随想录37期】 第一周总结
已知进入for循环时right<nums.size(),要满足sum >= target,left与right之间至少要有一个数,也就是nums[right],此时left<right<nums.size();原创 2024-05-12 19:51:53 · 906 阅读 · 0 评论 -
【代码随想录37期】Day04 两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II
注意使用虚拟头节点,可以避免对头节点的判断,防止各种复杂情况。原创 2024-05-11 21:56:58 · 200 阅读 · 0 评论 -
【代码随想录37期】Day02 有序数组的平方、长度最小的子数组、螺旋矩阵Ⅱ
当两个数相等时,一定是相邻排列的,放在大于的情况,会优先放end,下一个数如果还想等,还是先放end,等到不相等了,要么end还在0右边,要么在0左边但是在begin右边,怎么都比begin小,所以等于时一定是相邻的。移动两步,end有溢出的风险,例如left=right时。原创 2024-05-10 23:09:18 · 282 阅读 · 0 评论 -
【代码随想录37期】Day01 二分查找 + 移除元素
二分查找详解 + 双指针移除元素 详解原创 2024-05-08 22:43:55 · 533 阅读 · 2 评论 -
PAT乙:1009 说反话
题目链接link知识点:gets函数:char a[40000];gets(a);gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以应该确保buffer的空间足够大,以便在执行读操作时不发生溢出;接受数组a必须是char型数组,即char a[40000];这个40000代表的就是buffer;gets遇到空格不会停止输入,只有遇到换行符才会停止输入;不管输入多少个空格,gets都会如实记录控制台输入的数据;注意: gets()已经不被PAT中C+原创 2021-06-22 14:43:24 · 128 阅读 · 0 评论 -
PAT乙:1022 D进制的A+B
知识点:pow()函数:头文件cmathD进制每一位提取: bit = number %D; number /= D结果表示出来要用十进制: result += bit * pow(10,count); //count是进行number /= D的次数关于long long 类型的占位符输出:printf("%I64d",s);输入:scanf("%I64d",&l);关于数据类型的使用范围代码#include<cstdio>#inc原创 2021-06-21 14:59:46 · 102 阅读 · 0 评论 -
PAT乙:1036 跟奥巴马一起编程
题目链接link知识点C++四舍五入在math.h或cmath头文件中有四舍五入有关的函数:round函数就可以完成四舍五入的工作。行:row列:col代码#include<cstdio>#include<cmath>int main(){ double col = 0; char c = ' '; scanf("%lf %c",&col, &c); double row = round(col/2原创 2021-06-20 20:51:30 · 90 阅读 · 0 评论