1027-二叉树的层次遍历
原题:牛客题目描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是[[3],[9,20],[15,7]]示例1输入{1,2}返回值[[1],[2]]示例2输入{1,2,3,4,#,#,5}返回值[[1],[2,3],[4,5]]说明:本题目包含复杂数据结构TreeNode,点此查看相关信息思想:本例考量二叉树的层次遍历,首先题目给出了该二叉树的结构,
1027-实现二叉树的前序、中序和后序遍历
题目地址:牛客算法思想:首先题目给出了一个数组,根据输出的结果知道,2是左孩子,1是根节点,3是右孩子,因此可以直接遍历这棵树,当根节点不为空的时候递归遍历即可;最后的结果输出的是一个二维数组,意思是第一行为前序遍历的结果;第二行为后续遍历的结果;第三行为后序遍历的结果。根据测试框给出的样式,该二维数组使用的是vector变长数组结构,因此需要先定义三个不同的前中后的遍历数组,通过使用引用的方式,直接在遍历时修改其结果。最后将这三个不同的前中后数组定义为二维变长数组即可。代码:/** * s
Ubuntu18.04安装lib**等包的单个下载地址!
Ubuntu18.04安装lib**等包的单个下载地址!https://pkgs.org/download/https://packages.ubuntu.com/zh-cn/groovy/i386/gcc-10-base/download
Ubuntu18.04安装wine5.0
1.准备工作:1.1首先更新自己的sources.list中的文件;使用命令:sudo gedit /etc/apt/sources.list 在打开的文件中,添加如下两行:deb http://security.ubuntu.com/ubuntu xenial-security main deb http://cz.archive.ubuntu.com/ubuntu groovy main 添加这两行的目的是为了下载lib**一类的安装包,不需要单个去找了;1.2使用命令更新:sud
libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast
使用wine,打开微信和QQ的时候提示以下两个错误:libGL error: No matching fbConfigs or visuals foundlibGL error: failed to load driver: swrast参考了很多方法,并没有起到作用,最后找到了这个:https://askubuntu.com/questions/834254/steam-libgl-error-no-matching-fbconfigs-or-visuals-found-libgl-error-
ModuleNotFoundError: No module named ‘importlib_metadata‘
Jupyter server process finishedTraceback (most recent call last): File "/home/wgj/anaconda3/lib/python3.7/site-packages/jsonschema/__init__.py", line 31, in <module> from importlib import metadataImportError: cannot import name 'metadata' from
module ‘cv2‘ has no attribute ‘samples‘
---------------------------------------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-8-cd7705adf4e1> in <module>----> 1 cascade.load(cv.samples.findFile("/hom
11-02 两个数组的交集
原题思路:如果这个题给出的不是变长数组,可以使用哈希数组进行判定,但是给出的变长数组,在使用其最大长度定义数组的时候会报错,因为可能是0;因此,这个题使用UNordered_set数组进行操作,set数组能够自动去重。这样,我们首先建立两个set数组h, h1,在遍历第一个数组num1的时候,将数组中的元素压入到set数组h中去,之后遍历第二个num2数组,如果num2中的元素出现在h1中,则判断这个元素是否已经被压入到h2中,如果在h2中没有出现,则将这个元素压入到最终的结果中。如果没有判断是否
11-04整数反转(强制类型转换)
原题:分析:题目给出了整数的范围,如果超出这个范围则数据会溢出,当溢出的时候返回的结果是0;因为给出的X的范围是整数型int,那么存储结果的时候可以使用long,之后再进行强制类型转换,这样可以保留到int能够保留的数值大小且不会溢出。最后使用三元组判别法判别进行输出。class Solution {public: int reverse(int x) { long ans = 0; while(x != 0) { in
11-05 最大子序和
原题:解法:首先是最大值的定义。INT_MIN这个是默认的,INT_MAX整形的最大值;利用贪心的思想求解这道题,其时间复杂度会控制在O(N)。**所谓贪心,就是只管当前能够得到的最大值,别的事情都不管。**因为求的是最大连续子列和,那么当前几个数字相加得到的结果比初始最大值要大的时候,那么就更新,如果前面的数字小于零,那么直接讲求得的和重置为0,重新开始即可。有很多人提到了动态规划或者暴力的解法,可能容易想到但不容易操作,如果限定了时间,暴力在数据规模很大的时候会超时。class Soluti
11-05 最后一个单词的长度
题目思路:首先讲字符串反转,变为从前到后开始统计;如果反转之后的字符串前面有空格,那么则不统计,但是为了防止这一点出现,可以在循环的时候加一个判断,只返回统计的长度不为0的时候的值;如果遍历得到的值不是空格,则统计其长度,这样当遍历得到的全为空格的时候,cnt是不会增加的,输出的一定是0。class Solution {public: int lengthOfLastWord(string s) { int len = s.length(); revers
WPS检测到字体缺失Windows字体包方正字体库
下载字体包:https://download.csdn.net/download/weixin_45885232/13091733使用如下命令:sudo cp MTEXTRA.TTF symbol.ttf webdings.ttf wingding.ttf WINGDNG2.TTF WINGDNG3.TTF /usr/share/fontssudo mkfontscale sudo mkfontdir sudo fc-cache ...
11-06 第三大的数
原题链接解析:根据题目的描述,如果有重复的数字需要进行去重操作,因此想到了set数组,而且题目给出的是从大到小的排序,结合set的特征,进行重载。当不满足3个数字的时候,要输出其中最大的那个数字,那么重载之后一定是第一个,输出set的开头元素即可。补充一下set的排序操作:默认情况下,set是从小到大进行排序的,当需要从大到小进行排序时,需要进行重载,重载的方式为set<int, greater> s;在定义中加入了greater的参数。补充一下set的插入和遍历:set的插入操
11-06 字符串相加
原题链接解析:题目为长整数相加的变形版本,因为其比较长,所以考虑使用双指针的策略,从右到左依次进行遍历和计算,当相加的数值carry大于10时,取其余数,添加到字符串后面,之后对carry取整,进行下一次的操作。为了防止在相加的过程中有一个到了头另外一个没到,所以在每一个数组相加的时候,都判断一下是否是到头了,即i>=0 或j>=0。最后将得到的字符串进行反转即可。完整代码:class Solution {public: string addStrings(string
11-07 计数质数
原题链接解析:所谓质数,是指除了本身不能被其他数字整除的数。如果给出的n的范围小于10^5,可以使用打表的方式进行求解:1、首先判断这个数字是不是素数;2、如果是素数加入数组当中去;给出求100以内质数表相应的代码:const int maxn = 101;bool p[maxn] = {false};bool is_p(int n){ if(n <= 1) return false; int sqr = (int)sqrt(1.0* n); for(int i=2;
11-09字符串中的单词数
原题链接解析:方法一:使用python直接进行分割,之后返回分割后的数量即可,时间16ms:class Solution(object): def countSegments(self, s): """ :type s: str :rtype: int """ return len(s.split())方法二:使用c++的字符串进行操作,判断当前不是空格但下一个位置是空格,时间0ms:class Sol
今日推荐
周排行