![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 79
weixin_45588765
这个作者很懒,什么都没留下…
展开
-
C++牛客网编程(十五)
目录链表中环的入口结点链表中倒数最后第k个结点复杂链表的复制链表中环的入口结点给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n≤10000n,1<=结点值<=10000要求:空间复杂度 O(1),时间复杂度 O(n)例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。思路:a,b都从头结点开始,a每走一步,b走两步,当a和b相遇原创 2022-04-05 10:16:54 · 150 阅读 · 0 评论 -
C++牛客网编程(十四)
二叉树中和为某一值的路径(三)描述:给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 。1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点2.总节点数目为n3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)数据范围:0<=n<=10000 −10^9<=节点值<=10^9思路:通过两个dfs对每个结点进行深度遍历class Solution {publi原创 2022-04-03 17:01:32 · 772 阅读 · 0 评论 -
C++牛客网编程(十三)
序列化二叉树描述:请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#)二叉树的反序列化(Deserialize)是指:根据某种遍历原创 2022-03-31 10:47:43 · 1134 阅读 · 0 评论 -
C++牛客网编程(十二)
二叉树的下一个结点描述:给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示思路:分结点类型进行讨论。如果结点有右子树,则下一个结点是右子树的最左结点;如果结点没有右子树,有父结点,则一直向上查询在父结点左子树的结点;如果是最右结点,即中序遍历最后一个,则下一个结点为空。class Solution {原创 2022-03-30 11:31:13 · 58 阅读 · 0 评论 -
C++牛客网编程(十)
目录判断数组是否是某二叉树的后序遍历二叉树中和为某一值的路径(一)二叉树中和为某一值得路径(二)判断数组是否是某二叉树的后序遍历描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。数据范围: 节点数量 0≤n≤10000节点上的值满足 1≤val≤1051 ,保证节点上的值各不相同要求:空间复杂度 O(n),时间时间复杂度 O(n2)提示:1.二叉搜索树是指父亲节点大于原创 2022-03-29 11:33:06 · 106 阅读 · 0 评论 -
C++牛客网编程(十一)
找到两个无环单向链表的第一个公共点描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围: n≤1000n要求:空间复杂度 O(1),时间复杂度 O(n)例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。思路:先计算出两个链表的长度,计算差值。长链表遍原创 2022-03-29 11:20:10 · 63 阅读 · 0 评论 -
C++牛客网编程(九)
描述给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length == pre.length2.pre 和 vin 均无重复元素3.vin出现的元素均出现在 pre里4.只需要返回根结点,系统会自动输出整颗树做答案对比数据范围:n≤2000,节点的值 −10000≤val≤10000要求:空间复杂度 O(n),原创 2022-03-27 10:47:14 · 1498 阅读 · 0 评论 -
C++牛客网编程(八)
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)数据范围:0≤n≤15000 ,树上每个节点的val满足 ∣val∣<=1500要求:空间复杂度:O(n),时间复杂度:O(n)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]思路:用队列层次遍历, 最后打印时将偶数行反转class Solution {public: vector&原创 2022-03-26 11:31:09 · 1047 阅读 · 0 评论 -
C++牛客网编程(七)
描述请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。数据范围:0≤n,m≤20 1≤len≤25思路:运用深度遍历。重点是深.原创 2022-03-26 08:31:52 · 134 阅读 · 0 评论 -
C++牛客网编程(六)
求两个数的最大公约数,欧几里得算法#include <iostream>using namespace std;int change(int a, int b) { if (a%b == 0) return b; else return (b, a%b); }int main() { int a, b; cin >> a >> b; cout << change(a, b) << endl; return原创 2022-03-12 15:25:35 · 173 阅读 · 0 评论 -
C++牛客网编程(五)
描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:0≤n≤10000进阶:时间复杂度O(n) ,空间复杂度O(n)思路:设置另外一个数组作为个数标志,直到大于1就输出 int duplicate(vector<int>.原创 2022-03-11 11:06:13 · 750 阅读 · 0 评论 -
C++牛客网编程(三)
描述输入球的中心点和球上某一点的坐标,计算球的半径和体积输入描述:球的中心点和球上某一点的坐标,以如下形式输入:x0 y0 z0 x1 y1 z1输出描述:输入可能有多组,对于每组输入,输出球的半径和体积,并且结果保留三位小数 为避免精度问题,PI值请使用arccos(-1)。#include <iostream>#include <math.h>#include <iomanip>using namespace std;int mai原创 2022-03-07 09:18:50 · 114 阅读 · 0 评论 -
c++牛客网编程(二)
描述求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。输入描述:可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。输出描述:对于每组数据,输出N的质因数的个数。思路:不断将正整数分为一个质因数和另一个数的乘积#include <iostream>using namespace std;int main(){ long n; int num=0...原创 2022-03-06 10:30:47 · 304 阅读 · 0 评论 -
C++牛客网编程
描述输入n个整数,依次输出每个数的约数的个数输入描述:输入的第一行为N,即数组的个数(N<=1000) 接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)输出描述:可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上面的一个数的约数的个数。#include <iostream>using namespace std;int numAdd(int num) { int ans = 0; int i; for原创 2022-03-04 21:03:19 · 268 阅读 · 0 评论 -
C++容器
容器(container)用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在 STL 中都被实现为容器。程序员使用容器时,即将容器类模板实例化为容器类时,会指明容器中存放的元素是什么类型的。容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实际插入的是对象或变量的一个复制品。STL 中的许多算法(即函数模板),如排序、查找等算法,在执行过程中会对容器中的元素进行比较。这些算法在比较元素是否相等时通常用运算符进行,比较大小通常用<运算符进行,因此,被放入原创 2022-03-04 15:52:33 · 2101 阅读 · 0 评论