- 博客(26)
- 资源 (5)
- 收藏
- 关注
原创 Leetcode 199. 二叉树的右视图 解题思路及C++实现
解题思路:使用层序遍历,得到每一层的最后边的节点,然后push_back到结果容器中。通过使用q.size()函数,只需要一个队列即可实现层序遍历。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNod...
2019-06-24 22:48:32 199
原创 Leetcode 129. 求根到叶子节点数字之和 解题思路及C++实现
解题思路:经典的DFS问题。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(N...
2019-06-23 22:09:06 210
原创 Leetcode 117. 填充每个节点的下一个右侧节点指针 II 解题思路及C++实现
方法一:层序遍历解题思路:和第116题一模一样,其实,用队列queue更简单一些,不用将顺序倒来倒去。通过使用队列的长度信息queue.size(),可以只需要一个队列就能做到层序遍历。/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; ...
2019-06-23 21:36:37 436
原创 Leetcode 116. 填充每个节点的下一个右侧节点指针 解题思路及C++实现
方法一:层序遍历(这是比较暴力愚蠢的方法)解题思路:这里使用层序遍历访问这颗完美二叉树,使用的是两个栈,而不是两个队列,因为这样在遍历每一层并指定next指针时会更方便一些,但是要注意的一点是,循环内的临时栈s2 是先push右子节点,再push左子节点。s2中节点顺序是反过来的,所以要依次pop到s1中。/*// Definition for a Node.class N...
2019-06-23 21:06:48 388
原创 Leetcode 114. 二叉树展开为链表 解题思路及C++实现
解题思路:使用递归的方法。根结点的左子树中,最右边的节点是左子树成为链表后的最后一个节点,找到这个节点,然后把这个节点的右节点指向根结点的右子树,同时,将根结点右子节点指向其左子节点,根结点的左子节点变为null,然后递归调用flatten函数。/** * Definition for a binary tree node. * struct TreeNode { * ...
2019-06-23 20:31:52 477
原创 python的re.findall()函数中的括号问题
最近在写python 正则化,遇到了一个坑。re.findall(pattern, str, flag=0) 共三个参数,pattern是匹配的正则表达式,str是待匹配字符串。如果在pattern中,有括号,则返回结果是括号所匹配到的结果,而不是整个正则表达式匹配到的结果。举例如下:下面是匹配mac地址的正则表达式。import res = 'afu4f-3f-54-gg-...
2019-06-21 23:19:15 6554
原创 Leetcode 113. 路径总和 II 解题思路及C++实现
解题思路:典型的深度优先搜索或回溯法的问题。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),...
2019-06-15 22:10:03 264
原创 Leetcode 106. 从中序与后序遍历序列构造二叉树 解题思路及C++实现
解题思路:思路和Leetcode 105题相同。区别在于,在这一题中,后序遍历的最后一个值为根节点。然后仍然是找到根节点后,划分左右子树,递归构建。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNod...
2019-06-15 20:26:29 417
原创 Leetcode 105. 从前序与中序遍历序列构造二叉树 解题思路及C++实现
解题思路:前序遍历preorder中,第一个即为根节点,然后找到中序遍历inorder中对应的节点,则inorder中该节点之前的值均在根节点的左子树上,该节点后面的值都在根节点的右子树上,所以可以使用递归构建二叉树,分别对其左子树的节点、右子树的节点构建数。/** * Definition for a binary tree node. * struct TreeNode {...
2019-06-15 19:45:27 293
原创 Leetcode 102. 二叉树的层次遍历 解题思路及C++实现
解题思路:使用队列来存储每一层的节点,因为输出的vector中,每一层是一个数组,所以在循环内,需要另外一个队列,总共使用两个队列。没获取一层的节点,就更新第一个队列a,将队列b直接赋给a。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode ...
2019-06-15 18:31:53 302
原创 Leetcode 98. 验证二叉搜索树 解题思路及C++实现
解题思路:分别验证root的左右子树是否是二叉树,同时,左子树的最大值要小于root->val,右子树的最小值要大于root->val。在左右子树中,一直向root的左子树探索,就能得到其最小值,一直向右探索,就能得到其最大值。/** * Definition for a binary tree node. * struct TreeNode { * ...
2019-06-15 16:46:56 486
原创 Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
解题思路:因为二叉搜索树的左右子树均为二叉搜索树。输入整数n,求其所有二叉搜索树的总数,就是求根节点分别为1,2, ..., n的二叉搜索树的总和。假设 i 的二叉搜索树的总数为 f(i),当根节点为 j 时,其二叉搜索树的总数为其左子树总数乘以右子树总数,即 f(j - 1) * f(n - j)。所以我们只要记录一个数组nums就可以了。class Solution {...
2019-06-15 16:29:34 408
原创 Leetcode 95. 不同的二叉搜索树 II 解题思路及C++实现
解题思路:递归的思路。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL...
2019-06-13 22:31:23 288
原创 Leetcode 257. 二叉树的所有路径 解题思路及C++实现
解题思路:使用深度优先搜索(DFS),深度优先搜索的终止条件是:当前节点root为叶子节点,即:!root->left && !root->right 为真,则找到了一条路径。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNod...
2019-06-02 20:07:59 369
原创 Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现
解题思路:使用队列实现二叉树的层序遍历,因为题目中要求每一层的val存储在一个vector中,所以在内循环中,还需要一个队列,用以存储更新每一层的节点。在最后,需要将得到的res数组逆序。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef...
2019-06-02 16:02:42 371
原创 Leetcode 104. 二叉树的最大深度 解题思路及C++实现
解题思路:使用递归的方法,递归比较左右子树深度,返回较大的值 + 1。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), l...
2019-06-02 12:28:51 399
原创 Leetcode 101. 对称二叉树 解题思路及C++实现
方法一:递归解题思路:先判断当前根结点root是否为null,如果是,则返回true;然后调用isSame函数,判断其左右节点是否满足对称要求;在isSame函数中,核心思想在于递归比较 r1->left == r2->right 与r1->right == r2->left。/** * Definition for a binary tree no...
2019-06-02 12:16:53 470
原创 Leetcode 100. 相同的树 解题思路及C++实现
解题思路:这道题利用递归的方法。 先对当前的节点p和q进行非null判断,如果均为null,则返回true; 如果一个为null,另一个非null,则返回false; p q均为非null,则比较它们的val,如果val不相等,则false; 如果val相等,则递归判断其左右子节点是否相同。 /** * Definition for a binary...
2019-06-02 11:45:52 182
原创 Leetcode 260. 只出现一次的数字 III 解题思路及C++实现
解题思路:这道题真有点玄乎,请看:https://blog.csdn.net/smile_watermelon/article/details/47750249先mark,之后再仔细研究。class Solution {public: vector<int> singleNumber(vector<int>& nums) { ...
2019-06-01 22:02:36 202
原创 Leetcode 201. 数字范围按位与 解题思路及C++实现
方法一:解题思路:这道题目,其实就是寻找m和n的32位二进制数中,前面的公共部分,然后后面的用0来补齐。因为后面的位中,必然存在某一个数k,m<= k <= n,而k的32位二进制数在那个位置上是0,做了位与运算之后,那一位就成0了。class Solution {public: int rangeBitwiseAnd(int m, int n) { ...
2019-06-01 21:21:21 287
原创 Leetcode 187. 重复的DNA序列 解题思路及C++实现
方法一:使用unordered_map,暴力解法解题思路:使用unordered_map<string, int>遍历字符串s,将每一个长度为10的子字符串计数,然后再遍历一次这个unordered_map,将计数值大于1的子字符串添加到结果res中。class Solution {public: vector<string> findRepeate...
2019-06-01 20:36:02 336
原创 Leetcode 137. 只出现一次的数字 II 解题思路及C++实现
解题思路:分别统计32位上1的个数tmp,然后对tmp进行对3求余,就能将出现三次的数去掉。最后通过 tmp<<i 将这一位的结果加到res上。class Solution {public: int singleNumber(vector<int>& nums) { int res = 0; for(int ...
2019-06-01 14:41:34 293
原创 Leetcode 268. 缺失数字 解题思路及C++实现
方法一:利用求和公式 1+2+...+n = n*(n+1)/2解题思路:利用求和公式 1+2+...+n = n*(n+1)/2,首先求出nums的size,就知道这n个数的和了,然后遍历数组nums,逐个减掉,得到的结果就是没有出现的数。class Solution {public: int missingNumber(vector<int>&...
2019-06-01 14:07:19 294
原创 Leetcode 231. 2的幂 解题思路及C++实现
方法一:递归,暴力解法解题思路:如果 n 是 0 或 1,需要做一个判断,如果n大于1,则可以对其取余,再做判断。class Solution {public: bool isPowerOfTwo(int n) { if(n == 0) return false; if(n == 1) return true; if(n % ...
2019-06-01 13:13:37 176
原创 Leetcode 191. 位1的个数 解题思路及C++实现
解题思路:和第190题思路差不多,通过遍历n的32位,计算得到位为1的个数。class Solution {public: int hammingWeight(uint32_t n) { int res = 0; for(int i = 0; i < 32; i++){ res += (n >> i...
2019-06-01 12:54:23 219
原创 Leetcode 190. 颠倒二进制位 解题思路及C++实现
解题思路:使用移位运算和与运算,将32位二进制数n中的每一位取出来,然后将取出的0或1相应地进行右移操作,最终加和得到结果。下面的程序中,循环执行32次,每一次循环,得到n的第 i 位数,即 通过将 n 向右移 i 位,然后 与 1,得到tmp,再将tmp左移 31-i 位,加到res上,最终即可得到结果res。class Solution {public: uint...
2019-06-01 12:28:37 330
IEEE 802.15.4标准文档 2015年
2018-06-02
Windows将下位机串口传输数据存储在txt文件并显示的VS2010工程及exe程序
2018-05-22
基于RSSI利用KNN位置指纹法的室内定位(卡尔曼滤波)
2018-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人