
数据结构与算法
文章平均质量分 99
认真的虎
电子科大小硕一枚,主要从事视觉slam研究,欢迎联系交流。
email:renzhendehu@qq.com
展开
-
Dijkstra算法-最短路径
743. 网络延迟时间class Solution {public: int Nv; int Ne; int infinite=200; int FindMiniDis(vector<int>& dist,vector<bool> collected){ int mindist=infinite; ...原创 2019-09-01 22:37:39 · 174 阅读 · 0 评论 -
Leetcode#109. 有序链表转换二叉搜索树
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: TreeNode* sortedListToBST(ListNode* head) { if(head==NULL) return NULL; if(head->next==NULL) return ne...原创 2019-05-15 20:42:50 · 231 阅读 · 0 评论 -
Leetcode#94. 二叉树的中序遍历,C++实现
目录1. 题目2. 方法一递归2.1. 代码2.2. 结果3. 方法一非递归3.1. 代码3.2. 结果1. 题目2. 方法一递归2.1. 代码class Solution {public: vector<int> inorderTraversal(TreeNode* root) { dfs(root); return temp; ...原创 2019-03-29 12:40:34 · 512 阅读 · 0 评论 -
Leetcode#145. 二叉树的后序遍历,C++实现
目录1. 题目2. 方法一递归2.1. 代码2.2. 结果3. 方法二非递归3.1. 代码3.2. 结果3.3.讲解1234561. 题目2. 方法一递归2.1. 代码class Solution {public: vector<int> postorderTraversal(TreeNode* root) { dfs(root); ...原创 2019-03-29 11:13:28 · 546 阅读 · 0 评论 -
Leetcode#513. 找树左下角的值,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码注意放入队列的顺序是先右边后左边。class Solution {public: int findBottomLeftValue(TreeNode* root) { queue<TreeNode*> node_queue; node_queue...原创 2019-03-27 22:03:13 · 202 阅读 · 0 评论 -
Leetcode#144. 二叉树的前序遍历,C++实现
目录1. 题目2. 方法一递归2.1. 代码2.2. 结果3. 方法二非递归3.1. 代码3.2. 结果1. 题目2. 方法一递归2.1. 代码class Solution {public: vector<int> preorderTraversal(TreeNode* root) { dfs(root); return temp;...原创 2019-03-28 09:15:09 · 726 阅读 · 0 评论 -
Leetcode#538. 把二叉搜索树转换为累加树,C++实现
目录1. 题目2. 方法一递归2.1. 代码2.2. 结果3. 方法二非递归3.1. 代码3.2.结果1. 题目2. 方法一递归2.1. 代码class Solution {public: TreeNode* convertBST(TreeNode* root) { dfs(root); return root; } void d...原创 2019-03-31 22:14:49 · 363 阅读 · 1 评论 -
Leetcode# 230. 二叉搜索树中第K小的元素,C++实现
目录1. 题目2. 方法一中序遍历法2.1. 代码2.2. 结果1. 题目2. 方法一中序遍历法2.1. 代码class Solution {public: int kthSmallest(TreeNode* root, int k){ stack<TreeNode*> tempstack; tempstack.push(root);...原创 2019-03-31 20:55:36 · 275 阅读 · 0 评论 -
Leetcode#669. 修剪二叉搜索树,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: TreeNode* trimBST(TreeNode* root, int L, int R) { if(root==NULL) return root; if((root->val)>R) ret...原创 2019-03-31 20:15:35 · 291 阅读 · 0 评论 -
Leetcode#637. 二叉树的层平均值,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: vector<double> averageOfLevels(TreeNode* root) { vector<double> sum_layer; if(root==NULL...原创 2019-03-23 23:02:27 · 496 阅读 · 0 评论 -
Leetcode#102. 二叉树的层次遍历
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> all_layer; ...原创 2019-05-15 21:45:28 · 135 阅读 · 0 评论 -
Leetcode#653. 两数之和 IV - 输入 BST
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: bool findTarget(TreeNode* root, int k) { //使用层次遍历 stack<TreeNode*> tempstack; tempstack.pus...原创 2019-05-15 21:57:33 · 180 阅读 · 0 评论 -
十大经典排序算法C++实现
文章目录十大经典排序算法(动图演示)#include <iostream>#include <vector>using namespace std;//冒泡排序void bubblesort(vector<int>& arr){ for(int i=0;i<arr.size()-1;++i){ for(int...原创 2019-08-22 21:28:19 · 338 阅读 · 0 评论 -
#445. 两数相加 II,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 ->...原创 2019-08-22 21:21:10 · 205 阅读 · 0 评论 -
C++防止输出科学计数法
//控制小数#include <iostream>#include <iomanip>using namespace std;int main(){ //强制使用小数,防止使用科学计数法 cout << fixed; //控制显示的精度,控制小数点后面的位数 cout << setprecision(7);...原创 2019-08-24 10:37:31 · 8810 阅读 · 0 评论 -
#91. 解码方法 动态规划
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出:...原创 2019-08-23 22:23:27 · 355 阅读 · 0 评论 -
背包问题解答
文章目录01背包二维数组一位数组【leetcode】背包问题汇总01背包二维数组class Solution {public: /** * @param m: An integer m denotes the size of a backpack * @param A: Given n items with size A[i] * @param V:...原创 2019-08-07 11:16:03 · 143 阅读 · 0 评论 -
牛客剑指offer编程题目C++实现
目录1. 二维数组中的查找2.1. 二维数组中的查找二维数组中的查找class Solution {public: bool Find(int target, vector<vector<int> > array) { if(array.size()!=0){ int row=0,col=array[0].size()...原创 2019-08-22 21:20:21 · 2416 阅读 · 0 评论 -
Leetcode#108. 将有序数组转换为二叉搜索树
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: TreeNode* sortedArrayToBST(vector<int>& nums) { return BST(nums,0,nums.size()-1); } TreeNo...原创 2019-05-12 21:34:06 · 125 阅读 · 0 评论 -
Leetcode#236. 二叉树的最近公共祖先
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) :...原创 2019-05-11 22:58:37 · 112 阅读 · 0 评论 -
Leetcode#235. 二叉搜索树的最近公共祖先
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root->val>p->val&&...原创 2019-05-11 22:11:32 · 208 阅读 · 0 评论 -
Leetcode#671. 二叉树中第二小的节点,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: int findSecondMinimumValue(TreeNode* root) { if(root==NULL) return -1; if(root->left==NULL&&ro...原创 2019-03-22 22:20:50 · 199 阅读 · 0 评论 -
Leetcode#337. 打家劫舍 III,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果3. 方法二3.1. 代码3.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: int rob(TreeNode* root) { if(root==NULL) return 0; int val1=root->val; ...原创 2019-03-22 22:01:44 · 623 阅读 · 3 评论 -
Leetcode#687. 最长同值路径,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: int longestUnivaluePath(TreeNode* root) { if(root==NULL) return 0; longestUnivaluePathwithroot(root...原创 2019-03-22 21:07:52 · 384 阅读 · 0 评论 -
Leetcode#101. 对称二叉树,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: bool isSymmetric(TreeNode* root) { if(root==NULL) return true; return isSymmetric(root->left,root->...原创 2019-03-20 21:59:20 · 338 阅读 · 0 评论 -
Leetcode#572. 另一个树的子树,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: bool isSubtree(TreeNode* s, TreeNode* t) { if(t==NULL) return true; if(s==NULL) return false; ret...原创 2019-03-20 21:30:19 · 364 阅读 · 0 评论 -
Leetcode#83. 删除排序链表中的重复元素,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果3. 方法二迭代3.1. 代码3.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: ListNode* deleteDuplicates(ListNode* head) { map&lt;int,int&gt; Non_repeat; if...原创 2019-03-12 14:38:56 · 235 阅读 · 0 评论 -
Leetcode#328. 奇偶链表,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-...原创 2019-03-16 22:56:21 · 210 阅读 · 0 评论 -
Leetcode#725. 分隔链表,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1...原创 2019-03-16 22:41:28 · 254 阅读 · 0 评论 -
Leetcode#21. 合并两个有序链表,C++实现
目录1. 题目2. 方法一2.1 代码2. 2结果1. 题目2. 方法一2.1 代码class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *Link_min=l1,*Link_max=l2,*Temp; ...原创 2019-03-12 11:22:18 · 373 阅读 · 0 评论 -
Leetcode#160. 相交链表,C++实现
目录题目代码结果吐槽题目代码class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *L1=headA,*L2=headB; while(L1!=L2) { L1=(...原创 2019-03-11 21:41:14 · 241 阅读 · 0 评论 -
Leetcode#234. 回文链表,C++实现
目录1. 题目2. 方法一:用堆栈2.1. 代码2.2. 结果3. 方法二3.1. 代码3.2. 结果1. 题目请判断一个链表是否为回文链表。示例 1:输入: 1-&gt;2输出: false示例 2:输入: 1-&gt;2-&gt;2-&gt;1输出: true2. 方法一:用堆栈2.1. 代码设定slow和fast两个指针,fast比slow快两倍,在一边移动sl...原创 2019-03-15 22:33:46 · 357 阅读 · 0 评论 -
Leetcode#206. 反转链表,C++实现
目录题目1. 递归法2. 插头法题目1. 递归法class Solution {public: ListNode* reverseList(ListNode* head) { if(head==NULL||(*head).next==NULL) { return head; } ListNod...原创 2019-03-10 17:24:56 · 334 阅读 · 0 评论 -
Leetcode#104. 二叉树的最大深度,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: int maxDepth(TreeNode* root) { if(root==NULL) return 0; return max(maxDepth(root-&gt;left),maxDepth(root-...原创 2019-03-17 10:59:30 · 325 阅读 · 0 评论 -
Leetcode#110. 平衡二叉树,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution { bool result=true;public: bool isBalanced(TreeNode* root) { Max_depth(root); return result; } int Max...原创 2019-03-17 11:21:39 · 334 阅读 · 0 评论 -
Leetcode#437. 路径总和 III,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: int pathSum(TreeNode* root, int sum) { if(root==NULL) return 0; return pathSumwithroot(root,sum)+pathSum(...原创 2019-03-19 13:50:17 · 316 阅读 · 0 评论 -
Leetcode#112. 路径总和,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: bool hasPathSum(TreeNode* root, int sum) { if(root==NULL) return false; if(root->left==NULL&&r...原创 2019-03-19 11:05:21 · 269 阅读 · 0 评论 -
Leetcode#617. 合并二叉树,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { if(t1==NULL) return t2; if(t2==NULL) return t1; ...原创 2019-03-19 10:37:31 · 625 阅读 · 0 评论 -
Leetcode#24. 两两交换链表中的节点,C++实现
目录1. 题目2. 方法一迭代法2.1. 代码2.2. 结果3. 方法二3.1. 代码3.2. 结果1. 题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1-&gt;2-&gt;3-&gt;4, 你应该返回 2-&gt;1-&gt;4-&gt;3.2. 方法一迭代法2.1. 代码class ...原创 2019-03-13 16:53:49 · 423 阅读 · 0 评论 -
Leetcode#404. 左叶子之和,C++实现
目录1. 题目2. 方法一2.1. 代码2.2. 结果1. 题目2. 方法一2.1. 代码class Solution {public: int sumOfLeftLeaves(TreeNode* root) { if(root==NULL) return 0; if(root->left!=NULL&&root->l...原创 2019-03-21 20:43:51 · 245 阅读 · 0 评论