Leetcode
Leetcode 冲冲冲!
钧桐
怕什么真理无穷?进一寸有进一寸的欢喜!
展开
-
two+two=four的解(全排列与深搜)
TWO+TWO=FOUR题目含义解题思路全排列枚举深搜结果展示其中深搜运行0.009s其中全排运行0.137s如何测试运行时间题目含义t w o ,f u r分别是0,1,2,3,4,5,6,7,8,9里面的六个数字。我们要找到它们组合使得two+two=four的等式成立,即 ~~ two+ two---------- ~ four解题思路全排列枚举1.for循环嵌套有点麻烦,我们直接使用c++自带原创 2021-03-14 15:26:25 · 750 阅读 · 0 评论 -
[BFS和DFS的故事]LC207--课程表(无环图的循序渐进,全网最易理解解法)
LeetCode207题目如下题目解析思路分析题目如下题目解析首先如果是一个环图,那么是无法学习的,例如数学和语文,学数学要先学语文,学语文要先学数学,那么就学不了啊。输入:numCourses = 2, prerequisites = [[1,0]]输出:true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。*********************************************************输入:numCourses =原创 2021-03-09 16:58:14 · 113 阅读 · 0 评论 -
[BFS和DFS的故事]LC127---单词接龙(挺经典的一题BFS,我淦)
LeetCode127题目如下,好长思路分析题目如下,好长思路分析广搜搜到了就一定是最短转换序列这里要说一下广搜都是用队列,深搜用堆栈这里的广搜就是beginword,每个位置26个字母全变一次进去查找,查找到了该字母就路径+1,然后入队,等着这一层搜完之后继续搜。当然如果等于endword就直接输出了。class Solution {public: int ladderLength(string beginWord, string endWord, vector<string原创 2021-03-05 14:56:00 · 107 阅读 · 0 评论 -
[BFS和DFS的故事]LC77---组合(深搜不剪枝,白首方悔迟)
LeetCode77我们先来观察一下题目普通的dfs剪枝的dfs真的很棒很基础的dfs了把,甚至可以直接几层for循环来搞定,但是有的时候循环层数太多也不好,乱花渐欲迷人眼啊!直接dfs呗!!!dfs一定要注意优化,也就是剪枝,当我们发现这条路走不通了,就马上放弃不走了,这样就可以节约很多的时间!我们先来观察一下题目普通的dfsclass Solution {public: vector<vector<int>> ans; vector<vect原创 2021-03-01 11:22:35 · 199 阅读 · 0 评论 -
[BFS和DFS的故事]LC104---二叉树的最大深度(题目暗示DFS)
LeetCode104题目如下代码如下题目如下代码如下就是平平无奇的dfs,注意递归的条件和出口就可以了/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeN原创 2021-03-02 11:01:52 · 103 阅读 · 0 评论 -
[BFS和DFS的故事]LC111---二叉树的最小深度(DFS注意只有一条分支的情况)
LeetCode111题目如下思路分析代码如下题目如下思路分析在学习锅二叉树的最大深度之后,这个题目就有点意思了,是不是直接把递归中的max换成min就可以了呢?题目会出现一个只有一个支路的情况,这个情况就是整个树的深度,代码中写的是right+left+1,因为有一个right或者left是等于0的;代码如下/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNod原创 2021-03-03 10:19:48 · 104 阅读 · 0 评论 -
[BFS和DFS的故事]LC257---二叉树的所有路径(左右为空说明走到尽头了)
LeetCode257题目如下思路与代码题目如下思路与代码二叉树,很熟悉,还是简单的二叉树,缪杀!二叉树路径直接dfs深搜就可以了啊!/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr)原创 2021-03-10 15:51:04 · 95 阅读 · 0 评论 -
Leetcode2020-9月刷题汇总---如何搬起脚边的砖块?
如何搬起脚边的砖块?LeetcodeLeetcodeLeetcode-队列-20.有效的括号(简单)Leetcode-贪心-56.合并区间(中等)Leetcode-优先队列-1046.最后一块石头的重量(简单)Leetcode-贪心-122.买卖股票的最佳时机 II(简单)Leetcode-树-100.相同的树(简单)Leetcode-树-101.对称二叉树(简单)Leetcode-树-102.二叉树的层序遍历(中等)Leetcode-图-997.找到小镇的法官(简单)Leetcode-原创 2020-09-28 15:44:33 · 182 阅读 · 0 评论 -
Leetcode-树-617. 合并二叉树(简单)
617. 合并二叉树题目如下解题思路c++代码题目如下解题思路将相同位置的值相加即可c++代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class S原创 2020-09-23 17:20:39 · 80 阅读 · 0 评论 -
Leetcode-树-968. 监控二叉树(困难)
968. 监控二叉树题目如下解题思路题目如下解题思路把每个节点分为3个状态来做0:未被覆盖1:已被覆盖2:需放置摄像头原创 2020-09-22 10:11:49 · 103 阅读 · 0 评论 -
Leetcode-树-538. 把二叉搜索树转换为累加树(简单)
538. 把二叉搜索树转换为累加树题目如下解题思路题目如下解题思路原创 2020-09-21 18:52:30 · 106 阅读 · 0 评论 -
Leetcode-搜索-130.被围绕的区域(中等)
130. 被围绕的区域题目如下解题思路dfs-c++代码题目如下解题思路不被包围的肯定有一边在边界,所以我们从边界遍历,边界遍历可以碰到的0是不会被改变的,里面遍历不到的说明肯定被包围了1.深度优先搜索,就是深搜,从边界往四个方向递归2.广度优先搜索,就是广搜,边界遇到0了先压到队列里面,之后从队列里面来进行判断dfs-c++代码在这里插入代码片...原创 2020-09-19 10:13:14 · 203 阅读 · 0 评论 -
Leetcode-贪心-56.合并区间(中等)
合并区间题目如下解题思路c++代码题目如下解题思路竟然是中等题目,其实感觉很菜,排个序,然后找右区间的转值就可以了c++代码class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { sort(intervals.begin(), intervals.end()); vector<vec原创 2020-09-16 20:45:17 · 85 阅读 · 0 评论 -
Leetcode-贪心-122.买卖股票的最佳时机 II(简单)
买卖股票的最佳时机 II题目如下解题思路c++代码题目如下解题思路最最沙雕的贪心题目,只图一乐,呵呵。c++代码class Solution {public: int maxProfit(vector<int>& prices) { long long max_price=0; for(int i=1;i<prices.size();i++){ if(prices[i]-prices[i-1]>0)原创 2020-09-16 20:09:43 · 92 阅读 · 0 评论 -
Leetcode-优先队列-1046.最后一块石头的重量(简单)
最后一块石头的重量题目如下解题思路c++代码题目如下解题思路1.使用优先队列来做2.sort然后增删这里使用的是第一个思路c++代码class Solution {public: int lastStoneWeight(vector<int>& stones){ priority_queue<int> pq; for (int s : stones) pq.push(s); while (pq.siz原创 2020-09-16 13:38:40 · 128 阅读 · 0 评论 -
Leetcode-队列-20.有效的括号(简单)
有效的括号题目如下解题思路Leetcode代码完整可运行代码题目如下解题思路这个涉及到括号的匹配,每次要匹配最近的括号,那么使用堆栈就不错!Leetcode代码class Solution {public: bool isValid(string s) { stack<char> stack; for(int i=0;i<s.length();i++){ if(stack.empty()){原创 2020-09-15 18:17:04 · 90 阅读 · 0 评论 -
Leetcode-树-102.二叉树的层序遍历(中等)
二叉树的层序遍历题目如下解题思路c++代码题目如下解题思路每层有一定的节点,这个节点与层数有关,我们引入一个depth来表示这个树有多少层,递归来完成二叉树的层序遍历c++代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), lef原创 2020-09-17 17:33:01 · 137 阅读 · 0 评论 -
Leetcode-树-101.对称二叉树(简单)
对称二叉树题目如下解题思路递归法迭代法题目如下解题思路还是继续认识树,和相同的树很相似,在这里我们给出两种解题方法,第一种是和相同的树解法一样的递归,第二种是迭代法递归法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(N原创 2020-09-17 17:08:18 · 96 阅读 · 0 评论 -
Leetcode-树-100.相同的树(简单)
相同的树题目如下解题思路c++代码题目如下解题思路这个题目是用来认识树的,不要觉得它很神秘,比较树,我们用到了递归,通过递归层层分工,代码思路变成非常简单。c++代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr)原创 2020-09-17 16:42:51 · 92 阅读 · 0 评论 -
Leetcode-图-133.克隆图(中等)
133. 克隆图题目如下解题思路c++代码题目如下解题思路为了避免重复的递归,我们使用哈希表存下已经递归过的节点c++代码/*// Definition for a Node.class Node {public: int val; vector<Node*> neighbors; Node() { val = 0; neighbors = vector<Node*>(); }原创 2020-09-18 16:36:08 · 121 阅读 · 0 评论 -
Leetcode-图-1042.不邻接植花(简单)
1042.不邻接植花题目如下解题思路c++代码题目如下解题思路1.先通过paths建立邻接表2.遍历每个点选色,每次不选邻接的公园的颜色就可以了c++代码class Solution {public: vector<int> gardenNoAdj(int N, vector<vector<int>>& paths) { vector<vector<int>> g(N); vector原创 2020-09-18 15:42:54 · 197 阅读 · 0 评论 -
Leetcode-图-997.找到小镇的法官(简单)
找到小镇的法官题目如下解题思路c++代码题目如下解题思路用两个数组存下信任和不信任的人的人数,然后最后判断一次就可以了c++代码class Solution {public: int findJudge(int n, vector<vector<int>>& trust) { vector<int> in(n+1,0); vector<int> out(n+1,0); for(aut原创 2020-09-18 15:02:29 · 213 阅读 · 0 评论