自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 平衡二叉树---leetcode110题

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr)...

2022-05-24 08:40:03 68

原创 找树左下角的值---leetcode513题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(n...

2022-05-23 11:37:28 71

原创 左叶子之和---leetcode404题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(n...

2022-05-23 10:50:14 76

原创 二叉树的所有路径---leetcode257题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(n...

2022-05-23 10:20:11 60

原创 完全二叉树的节点个数---leetcode 222题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nu...

2022-05-21 10:17:47 61

原创 对称二叉树---leetcode 101题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nu...

2022-05-19 11:11:38 194

原创 N叉树的前序遍历---leetcode 589题

解法1:递归法/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; ch...

2022-05-19 09:30:45 138

原创 翻转二叉树---leetcode 226题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(n...

2022-05-18 11:06:52 60

原创 二叉树的最小深度---leetcode 111题

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr)...

2022-05-18 09:58:13 78

原创 二叉树的最大深度---leetcode 104题

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr)...

2022-05-18 09:32:37 52

原创 填充每个节点的下一个右侧节点指针 II---leetcode 117题

/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next(NULL) {} Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}...

2022-05-18 09:15:57 61

原创 填充每个节点的下一个右侧节点指针---leetcode 116题

/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next(NULL) {} Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {} ...

2022-05-18 08:50:20 78

原创 pcl学习记录(1)

首先上个b站链接,视频先入门07-PCL教程-基础应用-PCL初识2——pcl_viewer设置背景前景色、点大小、不透明度、坐标轴长度、坐标轴位置_哔哩哔哩_bilibili1、pcl_viewer操作pcl_viewer test.pcd 查看某pcd文件pcl_viewer -multiview 1 ism_test_cat.pcd ism_test_wolf.pcd 多视图窗口显示2、pcl_pcd_convert_NaN_nan将“NaN”值转换...

2022-05-17 18:22:34 801

原创 在每个树行中找最大值---leetcode 515题

使用max_element这个vector中的接口求其中元素的最大值。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : va...

2022-05-17 11:36:04 69

原创 N叉树的层序遍历---leetcode 429题

思想还是二叉树层序遍历的思想,只不过在后边输入每一子层元素时的操作是用for循环代替。/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _child...

2022-05-17 11:04:32 71

原创 二叉树的层平均值---leetcode 637题

在二叉树的层遍历的基础上,加入对每一层进行求和,取平均值的操作。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x)...

2022-05-17 10:49:46 58

原创 二叉树的右视图---leetcode 199题

对于二叉树的层序遍历,输出他的右视图,就相当于输出他的每一层遍历的最后一个元素。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x)...

2022-05-17 10:08:39 63

原创 二叉树的层序遍历Ⅱ---leetcode 107题

其实在层序遍历的基础上,反转一下最后的结果就可以/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(...

2022-05-17 09:50:32 84

原创 二叉树的层序遍历---leetcode 102题

解法:使用队列queue先进先出来实现二叉树的层序遍历。首先创建一个queue que;判断root是否为空,不为空,把root输入que;然后创建一个vector result储存最后输出的结果然后开始while循环,定义que的size,创建一个vector vec用来储存二叉树每一层for循环开始遍历二叉树每一层,定义一个node指向que第一个值,然后pop(),然后将其输入vec,然后将左右子节点输入que;第一层遍历结束将vec输入result;继续whil...

2022-05-17 09:36:14 64

原创 二叉树的后续遍历---leetcode 145题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(n...

2022-05-16 10:59:54 50

原创 二叉树的中序遍历---leetcode 94题

解法1:递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(n...

2022-05-16 10:46:26 226

原创 二叉树前序遍历---leetcode 144题

解法1:递归法:递归函数写法三要素:1、确定递归函数的参数和返回值;2、确定递归的终止条件;3、确定单层递归的逻辑。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr)...

2022-05-16 10:29:32 62

原创 前k个高频元素---leetcode 347题

解法1:思路:一共要解决3个问题:统计每个元素出现的次数;按照元素出现的次数高低进行排序;输出前k个出现次数最高的元素组成的数组。第一个问题,可以用map来解决。创建一个容器map,遍历nums,map的first储存元素,second储存元素次数。第二个问题,用优先队列来解决。创建一个队列q,对q的要求:内部储存pair类型;是一个小顶堆,也就是优先输出最小值;写一个仿函数定义比较方式,通过比较pair的second来排序。然后开始遍历map,最后输出的q中就是含有k个元素的小顶堆。...

2022-05-12 09:29:50 85

原创 c++---优先队列(priority_queue)

C ++中的优先队列是STL中的派生容器,它仅考虑最高优先级元素。队列遵循FIFO策略,而优先队列根据优先级弹出元素,即,优先级最高的元素首先弹出。与普通队列区别: 在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。 优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着先插入的元素将被首先删除。 如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。 语法:priority_queue&

2022-05-11 16:05:19 8491

原创 滑动窗口最大值---leetcode 239题(详解详解)

对于小白的建议,这个题的最好解法肯定是用队列,我看网上将单调队列看到云里雾里,建议跟着题动手推,理解的更快一点解法1: 常规双指针法思路:定义两个指针,指在窗口的两端,然后遍历窗口内部的元素找到最大值,输出。然后两个指针一起向后移动重复执行上述步骤。class Solution {public: int calcMax(int left,int right,vector<int>& nums) { int max = nums[left]; .

2022-05-11 15:45:44 1935

原创 逆波兰表达式求值---leetcode 150题

这道题我先说两个小细节:最起码我做的时候一开始没注意到,1.注意语句1和2,减法和除法运算时要注意num1,num2 的顺序,2.注意语句3,再将tokens元素添加到st中时要转换元素类型,stoi()就是起这个作用。思路:创建栈st,然后开始遍历tokens,遇到数字就把数字写入st,遇到运算符就把运算符前边两个数字做运算,并且结果输入到st中,最后输出结果就行。class Solution {public: int evalRPN(vector<strin...

2022-05-10 11:32:20 242

原创 c++ ----to_string、stoi()、atoi()

1、to_string包含在# include<string>。作用是把数值类型如int、double、long等转化为string,int a = 4;double b = 3.14;string str1, str2;str1 = to_string(a);str2 = to_string(b);cout << str1 << endl;cout << str2 << endl;2、stoi和atoi ...

2022-05-10 11:28:46 1377

原创 删除字符串中所有相邻重复项---leetcode 1047题

这道题也是用了栈的思想看操作:创建一个栈st,然后遍历字符串,如果st为空或者st.top()不等于s[i],就把s[i]输入st,如果st.top()等于s[i],那就执行st.pop();因为如果st.top()等于s[i]说明在s中遇到了两个连在一起的重复字母。这时就相当于在st中把两个连着的重复字母删除了,等到遍历完s后,st中储存的字符串就是没有相同字母连着的字符串。然后把st中字符串赋给另一个string,但此时string中的元素顺序是反的,因为stack先进后出的特性。最后把str...

2022-05-10 10:14:49 248

原创 有效的括号---leetcode 20题

首先分析题,有效的括号,也就是要求括号是对称的,可以是整体对称如:{}(),也可以是分别对称, 如:{()}。正确的结果只有这两种情形。所有利用了栈先进后出的思想。下面以 “ {}()()”为例创建一个stack开始遍历字符串;i= 0 s[i]='{' st输入'}'i=1 s[i] = '}' 这里执行st.pop(),这就相当于做了比较,因为只有s[i]==st.top(),才会执行这一步,这说明这个括号正确闭合了。之后还是继续重复执行这一步骤。class Soluti...

2022-05-10 09:43:42 186

原创 c++---queue用法

queueC++队列⽤法详解⼀、定义queue是⼀种容器转换器模板,调⽤#include< queue>即可使⽤队列类。⼀、queue初始化queue<Type, Container> (<数据类型,容器类型>)初始化时必须要有数据类型,容器可省略,省略时则默认为deque 类型初始化⽰例queue<int>q1;queue<double>q2;queue<char>q3;queue<char, list<..

2022-05-09 11:28:26 971

原创 用队列实现栈---leetcode 225题

唯一的难点在于如何实现pop()功能,只要将队列除最后一个元素外,其他元素重新填入队列中,就可以了class MyStack {public: queue<int> q; queue<int> q1; MyStack() { } void push(int x) { q.push(x); } int pop() { int size = q.size();...

2022-05-09 11:03:50 99

原创 用栈实现队列---leetcode 232题

主要是为了帮助理解队和栈的概念,使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈一个输入栈,一个输出栈class MyQueue {public: stack<int> stin; stack<int> stout; MyQueue() { } void push(int x) { stin.push(x); } int pop() { ...

2022-05-09 10:21:14 123

原创 重复的子字符串----leetcode 459题

当知道KMP算法中的next数组的作用后,这一题要比28. 实现 strStr()这道题简单。这道题其实就是利用KMP算法中的前缀表找规律,只要是能用子串构成的字符串,他的前缀表最大的数必然是父串减子串,class Solution {public: bool repeatedSubstringPattern(string s) { if(s.size()==0){ return false; } vector...

2022-05-06 11:00:06 232

原创 实现strStr()----leetcode 28题

解法1:定义两个指针,i指向h开头,j指向n开头,开始while循环,如果h[i]==n[j]。两个指针一起往下移动当遇到h[i] != n[j],把i回退到h开头的下一位,j回退到n开头,重新再while循环比较,直到j能走到n的最后,说明在h中找到了n,这时返回结果。class Solution {public: int strStr(string haystack, string needle) { int i = 0; int j = ...

2022-05-06 10:11:03 112

原创 左旋转字符串---leetcode 剑指offer 58题

解法简单:先反正整体,再反转局部。class Solution {public: string reverseLeftWords(string s, int n) { reverse(s.begin(),s.end()); int num = s.size(); reverse(s.begin(),s.begin()+ num - n); reverse(s.end() - n,s.end()); retu...

2022-05-06 08:38:21 86

原创 翻转字符串里面的单词---leetcode 151题

这道题分步骤来写:首先要去除多余的空格:有两种方法第一种:快慢指针法:时间复杂度低但是思路复杂void removeExtraSpaces(string& s) { int slowIndex = 0, fastIndex = 0; while (s.size() > 0 && fastIndex < s.size() && s[fastIndex] == ' ') { ...

2022-05-05 15:09:23 985

原创 替换空格---leetcode 剑指offer05题

解法1:双指针法,不需要使用额外空间首先统计字符串中空格的个数,然后将字符串扩容到将空格替换为%20的长度,指定两个指针,1指针指向字符串扩容前的最后一个元素位置,2指针指向扩容后最后一个元素位置,然后开始循环,当1指针指向的元素不是空格时,把1指针元素赋格2指针,然后两个指针同时向前移动;当1指针指向元素为空格,把%20赋给2指针,并且2指针向前移动2位。class Solution {public: string replaceSpace(string s) { ...

2022-05-05 10:04:55 238

原创 反转字符串---leetcode 344题 541题

解法:双指针法,简单题定义两个指针,开始一个指头,一个指尾,然后互换两个元素,然后将两个指针向中间移动。class Solution {public: void reverseString(vector<char>& s) { int index1 = 0,index2 = s.size() - 1; for(;index1<s.size()/2;index1++,index2--) { ..

2022-05-05 08:28:54 192

原创 四数之和---leetcode 18题

思想和求三数之和其实是差不多的,比三数之和多加一个指针;但是我没搞懂以下这两句话:为什么用第一句就不行,第二句就可以现在知道了,因为int位数不够,把他转换成long就可以用第一条语句了!!!!// nums[i] + nums[j] + nums[left] + nums[right] > target if (nums[i] + nums[j] > target - (nums[left] + nums[right]))if ((long)nums[i] + nu...

2022-05-04 15:40:30 690

原创 三数之和---leetcode 15题

思路:一句话没做出来,直接看答案思路是定义三个指针,初始一个i=0,一个left= i+1,一个right=nums.size()-1,然后这三个指针开始移动,分为三种情况:如果nums[i]+nums[left]+nums[right]>0,说明right指向的数大了,把right指针向左移;如果nums[i]+nums[left]+nums[right]<0,说明left指向的数小了,把left右移;如果nums[i]+nums[left]+nums[right]...

2022-05-04 10:17:52 157

空空如也

空空如也

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

TA关注的人

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