算法题
空寂夜雨时
这个作者很懒,什么都没留下…
展开
-
437.路径总和III (Leetcode)
这题一开始回溯错地方了,导致花时有点长首先对题目分析,找出路径中等于targetSum的,那么有三种情况,一种是root->val 刚刚好等于targetSum,另一种则是路径往下,还有一种是出现的节点在后面。第一和第二种可以结合成一个函数。边看边说吧~classSolution{public:intdfs(TreeNode*root,inttargetSum){if(root==nullptr)return0;...原创 2021-07-23 10:01:52 · 75 阅读 · 0 评论 -
98.验证二叉搜索树(Leetcode)
第一眼就是递归hhh,传值判断来自上个节点传来的范围。左子树的话别大于根节点,右子树要大于根节点就行了。确保当前这个节点在给予的范围内。classSolution{public:boolrecursion(TreeNode*root,longlongmin,longlongmax){if(root==nullptr) returntrue;if(root-&...原创 2021-07-22 10:04:49 · 70 阅读 · 0 评论 -
62.不同路径(leetcode)
首先想到的是回朔法hhh,结果超时了,思路应该是没有错的classSolution{public:voiddfs(intm,intn,intstartm,intstartn,int&count){if(startm<1||startn<1||startm>m||startn>n) //判断是否越界return;dfs(m,n,startm+1,startn,count);//向下...原创 2021-07-21 10:14:34 · 65 阅读 · 0 评论 -
617.合并二叉树(leetcode)
这题我的做法是将二叉树合成到第一颗树上,只需要将同一位置的值合并然后把节点赋值给上一节点的左右指针就行classSolution{public:TreeNode*mergeTrees(TreeNode*root1,TreeNode*root2){if(root1==nullptr&&root2==nullptr) //如果说root1和root2都是nullptr,那么直接返回nullptr即可...原创 2021-07-21 09:34:37 · 49 阅读 · 0 评论 -
121.买卖股票的最佳时机(Leetcode)
第一种方法是一直寻找股票的最低点,然后存储在minprice里,用当前的价格减去最低值得出利润,这个利润是每次都在更新(为了得到最大的利润值)classSolution{public:intmaxProfit(vector<int>&prices){intminprice=1e4; //它最大多大就设置多大,看下面题目的要求范围intmaxProfit=0; ...原创 2021-07-20 09:44:30 · 51 阅读 · 0 评论 -
102.二叉树的层序遍历(leetcode)
我这题的做法很简单,就是使用广度优先算法的思路high是树的高度,如果说数的高度和数组一样大,那么就说明没有创建过,则需要让二维数组高度+1,并且树的高度也加1,在把数据压入。即可/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),...原创 2021-07-18 17:52:08 · 83 阅读 · 0 评论 -
22.括号生成(leetcode)
//回溯法解决classSolution{public:vector<string>results;//结果集strings;//字符串voidbacktracking(intopen,intclose,intn){if(s.size()==n*2) //判断是否是两倍关系,因为一个(对应一个){resul...原创 2021-07-18 17:48:19 · 51 阅读 · 0 评论 -
206.反转链表(leetcode)
1.第一种思路是采用递归调用的方式,通过递归获取最后一个结点和它前面的结点,让后面的结点指向前面的结点即head->next->next =head,这个是关键,看懂这一步代表已经没问题了。最后只需要让当前当前结点的next等于nullptr即可。p一直是指向递归后序列的头结点。所以操作head即可classSolution{public:ListNode*reverseList(ListNode*head){if(head==n...原创 2021-07-17 20:02:12 · 105 阅读 · 0 评论 -
64.最小路径和(leetcode)
classSolution{public:intminPathSum(vector<vector<int>>&grid){intdistance=0;//用来计算距离if(grid.size()==0)//判断,如果gird无东西,直接返回0returndistance;intlength=grid[0].size();...原创 2021-07-16 10:23:34 · 51 阅读 · 0 评论 -
21.合并两个有序链表(leetcode)
classSolution{public:ListNode*mergeTwoLists(ListNode*l1,ListNode*l2){if(l1==nullptr) //判断如果l1等于nullptr时的情况returnl2;if(l2==nullptr)//判断如果l2等于nullptr时的情况returnl1;...原创 2021-07-14 23:11:38 · 39 阅读 · 0 评论 -
15.三数之和(Leetcode)
classSolution{public:vector<vector<int>>threeSum(vector<int>&nums){vector<vector<int>>arr;if(nums.size()<3)returnarr;sort(nums.begin(),nums.e...原创 2021-06-20 19:30:50 · 77 阅读 · 0 评论 -
11.盛最多水的容器(Leetcode)
首先贴代码classSolution{public:intmaxArea(vector<int>&height){inti=0;intj=height.size()-1;intmax=0;while(i!=j){intsum=0;sum=height[i]>height[j]?((j-i)*height[j--]):((j-i)*he...原创 2021-06-19 20:38:23 · 48 阅读 · 0 评论 -
7.整数反转-力扣(Leetcode)
classSolution{public:intreverse(intx){intsum=0;while(x!=0){intpop=x%10;if(sum>INT_MAX/10||sum<INT_MIN/10)return0;if((sum==INT_MAX&&pop>INT_MAX%10)...原创 2021-06-19 18:19:53 · 102 阅读 · 1 评论