- 博客(18)
- 资源 (27)
- 问答 (1)
- 收藏
- 关注
原创 Leetcode刷题笔记题解(C++):105. 从前序与中序遍历序列构造二叉树
前序遍历的第一个肯定是根节点,在中序遍历中根节点的左边是左子树, 右边是右子树,可以使用dfs搜索遍历查找左子树,先序遍历中第一个元素下一个开始到size_lefttree的长度作为左子树的前序遍历,剩下的作为右子树的前序遍历,中序遍历中根节点左边的作为左子树的中序遍历,右边的作为右子树的中序遍历代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo...
2020-09-18 09:22:08 342
原创 Leetcode刷题笔记题解(C++):106. 从中序与后序遍历序列构造二叉树
思路:后续遍历的最后一个节点肯定是父亲节点, 然后回到中序遍历中,父亲节点的左边是左子树的所有节点,右边是右子树的所有节点,然后左子树和右子树根据之前的再找父亲 节点即可代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x)..
2020-09-17 17:20:22 176
原创 Leetcode刷题笔记题解(C++):最长的“W”
说一下思路,从一个高峰值点开始的所有峰值点(高峰和低峰)记录为1,其他点为0然后 新生成一个数组记录每个1所在的小标,然后去求每5个1之间的距离即可, 然后取最大值代码如下:#include <iostream>#include <vector>using namespace std;int main() { int n; cin>>n; vector<int>nums(n); //用来保存每个点是否是..
2020-09-16 20:29:28 158
原创 Leetcode刷题笔记题解(C++):39. 组合总和
思路:此题的要求是每个数可以重复使用,那可以深度优先处理,分两种情况向下走1.当前元素要用2.当前元素不用,直接跳转至下一元素截止条件是: 数组中的元素都已经用过了且最后一个元素加入满足或者不满足为止用target的值来标定是否成立,加入一个元素,则target的值减去该元素的值,如果target=0的时候则满足输出结果中代码如下:class Solution {public: vector<vector<int>>res;//用于保存结果 ..
2020-09-15 21:09:15 177
原创 Leetcode刷题笔记题解(C++):41. 缺失的第一个正数
思路,进行位置互换下标为i的 对应的数应该是i+1比如:3 4 -1 1最后的位置结果为 1 -1 3 4输出第一个位置上的数不是i+1的对应的本该的数i+1代码如下:class Solution {public: int firstMissingPositive(vector<int>& a) { int i = 0, n = a.size(); //0的位置是1,依次类推 while(i &l..
2020-09-15 16:28:46 154
原创 Leetcode刷题笔记题解(C++):48. 旋转图像
可以利用旋转的特性进行对称处理,可以先上下互换,然后对角线互换;也可以对角线互换,然后再左右互换。代码如下:class Solution {public: void rotate1(vector<vector<int>>& matrix) { int n=matrix.size(); //上下翻转 for(int i=0;i<n/2;i++){ swap(matrix[i],..
2020-09-14 19:10:23 166
原创 c++中的容器set的介绍以及使用方法
set是STL中的一个关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。set常.
2020-09-13 11:45:39 1215
原创 c++标准模板库STL容器介绍
STL(标准模板库)库是用模板(template)写出来的,模板是STL的基础。STL分为:容器,迭代器,适配器,算法,函数对象。其中容器分为:顺序性容器,关联式容器。迭代器有5种:随机访问迭代器,双向迭代器,前向迭代器,输入迭代器,输出迭代器。STL对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。一、顺序性容器顺序性容器是一种各元素之间有顺序关系的线性表。元素在顺序容器中保存元素置入容器时的逻辑顺序,除非用删除或插入的操作改变这个位置,否则元素的位置保持为原来的位置。...
2020-09-13 10:59:15 416
原创 Leetcode刷题笔记题解(C++):47. 全排列 II
思路:回溯剪枝的思路用一个数组来标记当前数字是否已经被选择然后遍历查找下一个元素,直到选择的元素够了为止,递归回溯代码如下: class Solution {public: vector<vector<int>> res; vector<vector<int>> permuteUnique(vector<int>& nums) { //字符的长度 int len...
2020-09-08 17:02:15 160
原创 Leetcode刷题笔记题解(C++):46. 全排列
思路:搜索回溯的办法相当于往空格中放数字放好的跟未放的进行分开区别,然后进行交换和撤销交换进行递归代码如下:class Solution {public: vector<vector<int>> res; vector<vector<int>> permute(vector<int>& nums) { int len=nums.size(); backtract(num..
2020-09-08 15:36:38 212
原创 Leetcode刷题笔记题解(C++):54. 螺旋矩阵
题意:从第一个元素开始逆时针遍历整个矩阵,输出遍历的顺序思路:首先有四个方向,定义出来,依次去走,走之前先判断方向是否合规以及下一个节点是否没被遍历过。另外对于走过的节点进行标注,防止下次再访问死循环。代码如下:class Solution {private: //定义走的方向,向右,向下,向左,向上, static constexpr int directions[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};publi..
2020-09-05 09:40:29 353
原创 Leetcode刷题笔记题解(C++):91. 解码方法
思路:动态规划的思路首先是加入一个字符,如果第一个字符就为0直接返回0;dp[0]=1;如果第二个字符不为0,需要判断是否和前一个字符组成一个数字(在10-27的范围)如果组成则dp[i]=dp[i-1]+dp[i-2]如果不能组成,则dp[i]=dp[i-1]代码如下:class Solution {public: int numDecodings(string s) { int length=s.length(); vector&l..
2020-09-03 16:17:52 174
原创 Leetcode刷题笔记题解(C++):100. 相同的树
思路:挨个去判断是否相等1.如果当前的节点都为空,则说明没有子节点了,返回true2.如果当前的节点只有一个为空,则返回false3.如果当前节点的值不相等,则返回false4.如果相等且还有子节点继续向下判断/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN..
2020-09-03 15:01:37 168
原创 Leetcode刷题笔记题解(C++):231. 2的幂
思路1:常规做法,一直除以2直到1为止思路2:2的幂在二进制表示只有1个1,则对位1的个数进行判断即可代码如下:class Solution {public: //常规做法,一直除下去 bool isPowerOfTwo1(int n) { if(n==1) return true; if(n<=0||n%2==1) return false; while(n%2==0){ n=n/2; ..
2020-09-02 21:51:44 164
原创 Leetcode刷题笔记题解(C++):18. 四数之和
思路:在三数之和的基础上加一层循环即可,注意跳过相等的元素。代码如下,思路也可以看看我的注释:class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { //先从小到大进行排序 sort(nums.begin(),nums.end()); //存放结果 vector..
2020-09-02 20:20:27 232
原创 Leetcode刷题笔记题解(C++):16. 最接近的三数之和
思路:1.先排序从小到大,记录第一个最小值前三个数的和ans2.以每个数作为第一个数,然后从当前的下一个数(start下标)开始选第二个数,从最后一个数(end下标)开始倒数选第三个数求和sum3.先更新当前最接近的值,ans与sum谁最接近target则更新作为ans再判断走势,(1)如果ans==target,直接输出ans(2)如果ans<target则start++,继续循环(3)如果ans>target则end--,继续循环代码如下:clas...
2020-09-01 15:56:34 193
原创 Leetcode刷题笔记题解(C++):13. 罗马数字转整数
思路:从最后一个字符开始分析,存入,如果前一个比它小,则减去前一个的值,比如IV 5-1=4如果前一个比它大或者相等,则加上前一个的值,比如VIII 5+1+1+1=8代码如下:class Solution {public: int romanToInt(string s) { //用map来存放罗马字符对应的数字 map<char,int>roma_int={{'I',1},{'V',5},{'X',10},{'L',50},{...
2020-09-01 14:58:29 186
原创 Leetcode刷题笔记题解(C++):12. 整数转罗马数字
思路:输入规定为1-3999,所以数字不会很大很复杂直接给出每一位的数字进行组合即可,先得到num的每一位再加入字符串class Solution {public: string intToRoman(int num) { //罗马字符表 string roma[4][10]={ {"","I","II","III","IV","V","VI","VII","VIII","IX"}, {"","...
2020-09-01 11:28:02 206
请教一下怎么用DynamicDataDisplay在chart上画散点图????
2019-05-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人