101道leetcode
天天向上的菜鸡杰!!
生活明朗 万物可爱 人间值得 全力以赴
展开
-
leetcode135. 分发糖果
一:论语二:题目三:上码class Solution {public: int candy(vector<int>& ratings) { /** 思路:1.这里我们分两次遍历(从左向右 从右向左) 2.当我们从左向右遍历的时候 如果右边的评分比左边孩子分数高 那么右边孩子的糖果数上 就在左边孩子糖果数上加一 3.当我们从右向左遍历的时候,如果左边的评分比右原创 2022-02-12 23:17:44 · 5556 阅读 · 0 评论 -
leetcode134. 加油站
一:论语二:题目三:上码(暴力解法超时 但方法二还是可以的)// class Solution {// public:// int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {// /**// 思路:1.暴力解法,我们遍历所有的元素 直到可以成功为止 否则返回-1;// */// for(int原创 2022-02-12 21:50:39 · 256 阅读 · 0 评论 -
leetcode1005. K 次取反后最大化的数组和
一:论语这个用在自己身上感觉值得反省,很多道理我都能明白 也能讲给别人听 但是很多时候 自己往往做的不好 而且还很容易自我感动 最近真的很讨厌自己这样 不要自我感动 要正向积累 多去做 多去做 这只是个开始 然后慢慢的长进 再者就是坚持二:题目三:上码class Solution {public: int largestSumAfterKNegations(vector<int>& nums, int k) { /**原创 2022-02-11 22:01:58 · 464 阅读 · 0 评论 -
leetcode45. 跳跃游戏 II
一:论语己所欲 也要勿施于人 ,每个人的经历和阅历都是不同的 你凭啥说你认为的很开心的事情 去要求别人呢二:题目三:上码class Solution {public: int jump(vector<int>& nums) { /** 思路:1.这里的难点就在于 我们需要判断下一步的的最远跳跃距离,而不能只考虑每次都跳最远的距离 因为比如(2 3 1 2 4) 如果我们一开始就按最远距原创 2022-02-11 20:39:20 · 2679 阅读 · 0 评论 -
leetcode55. 跳跃游戏
一:题目二:上码class Solution {public: bool canJump(vector<int>& nums) { /** 思路:这里的贪心套路我们是不断更新我们可以覆盖的最大范围, 如果我们的最大范围是能够覆盖最终的数组下标那就返回true,这里我们考虑移动几步的时候 我们必须考虑原创 2022-02-10 23:30:38 · 1776 阅读 · 0 评论 -
leetcode53. 最大子数组和(暴力+贪心)
一:论语追求利益的同时 我们需要控制度 就好比鹅厂的王者荣耀 赚的盆满钵满 坑坏了多少青少年 但是鹅厂早已经开始控制度了二:题目三:上码(暴力+贪心)1:暴力class Solution {public: int maxSubArray(vector<int>& nums) { /** 暴力解法:我们用一个二维数组 那么我每次从这个 第一层的for循环出发 我们来确定我们从此下标进行 第二层的f原创 2022-02-09 22:14:40 · 396 阅读 · 0 评论 -
leetcode376. 摆动序列
一:论语很多事情我们都是措手不及的,因为充满太多的不确定性,但是我们应该如何做好准备呢 最近听书 听到 樊登说了一个词语 叫做 正向积累 我想这应该就是答案了吧二:题目三:上码class Solution {public: int wiggleMaxLength(vector<int>& nums) { int flag = 0; int count = 1; for(int i = 0; i <原创 2022-02-09 21:25:04 · 285 阅读 · 0 评论 -
leetcode37. 解数独
一:论语简而言之 就是要一视同仁 对待遇见所有的人要一个态度二:题目三:上码class Solution {public: bool backstacking(vector<vector<char> >& board) { for(int i = 0; i < board.size(); i++) { for(int j = 0; j < board[0].size(); j++) {原创 2022-02-06 23:04:35 · 306 阅读 · 0 评论 -
leetcode47. 全排列 II
一:题目二:上码1:思路一class Solution {public: vector<vector<int> > ans; vector<int>path; void backstacking(vector<int>&nums, vector<bool>&visited) { if(path.size() == nums.size()) {原创 2022-02-06 21:03:54 · 383 阅读 · 0 评论 -
leetcode491. 递增子序列
一:论语二:题目三:上码class Solution {public: vector<vector<int> >ans; vector<vector<int> >ans1; vector<int> path; void backstacking(vector<int>& nums,int index) { if(path.size() >= 2) {原创 2022-02-05 23:37:23 · 253 阅读 · 0 评论 -
leetcode90. 子集 II
一:论语巧言令色 鲜诶仁(要远离生活中那些只会说好听话的人 因为他们很少有仁心 其实也对 毁掉一个人的最好方式 是捧杀 夸你的别信 骂你的别听)二:题目三:上码class Solution {public: /** 思路:这里我们需要注意的是 不能出现重复的 那么有两种都是去重的限制 其中 设置index 是可以去重的 还有一种去重的方式是先将nums 中的数字先排序 然后在回溯的时候 横向遍历的时候遇见 相同的元素原创 2022-02-05 22:11:32 · 466 阅读 · 0 评论 -
leetcode93. 复原 IP 地址
一:每日论语解读follow me !! 君子坦荡荡 小人常威威二:题目三:上码class Solution {public: /** 思路:1.分析题意本题依然是切割字符串(我们需要对要分割的字符串做出处理 需要判断我们截取的字符串 是否合法) 2。关于‘.’的处理 我们是在原字符串的基础上进行插入和删除 */ vector<string>ans; //参数 index 是因为防止出现重原创 2022-02-05 21:07:41 · 1541 阅读 · 0 评论 -
leetcode131. 分割回文串
一:题目二:思路1.分析题意:这里是给定我们一个字符串 我们输出的结果是 切割不同的位置 来得到不同的字符串然后这些字符串是要是回文字符串 所以我们需要一个函数去判断我们输入的字符串是否是回文字符串(这里用双指针法来判断是否为回文字符串)2.递归回溯来解决vector<vector >ans;vector path;1>:确定递归函数的参数void backstacking(string &str,int index)2>:确定回溯终止条件//当我原创 2022-02-04 22:32:47 · 272 阅读 · 0 评论 -
leetcode17. 电话号码的字母组合
一:题目二:思路1.分析题意这个我们输入的数字字符串,每个数字代表的是一个字符串,我们就可以将其设置为一层需要遍历的字符串,所以我们就可以知道,我们遍历出的每个字符组合的长度等于(我们输入的数字字符串的大小)我们需要定义一个字符串数组const string mp[10] = {“”,//0“”,//1“abc”,//2“def”,//3“ghi”,//4“jkl”,//5“mno”,//6“pqrs”,//7“tuv”,//8“wxyz”,//9};2.回溯的三步曲原创 2022-02-03 22:22:49 · 444 阅读 · 0 评论 -
leetcode105. 从前序与中序遍历序列构造二叉树
一:题目二:上码/** * 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(nul原创 2022-01-27 21:03:14 · 675 阅读 · 0 评论 -
leetcode106. 从中序与后序遍历序列构造二叉树
一:题目二:思路例子:中序[9,3,15,20,7];后序[9,15,7,20,3]1.我们先选取后续的最后的结点3(其是根节点)2.我们在中序序列中用上一步求出的根节点3并记录其在中序数组中的位置rootin,然后我们就可以求出 左子树的结点个数(rootin - leftin),同时右子树我们也可以找到范围3.根据我们求出的左子树的结点个数,我们可以确定后序遍历序列中的(我们左右子树的范围)4.接下来我们通过递归 继续根据新的数组范围 在后序序列中求出根节点,然后再在中序序列中重.原创 2022-01-27 20:33:38 · 1286 阅读 · 0 评论 -
leetcode538. 把二叉搜索树转换为累加树
一:题目二:上码/** * 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(nul原创 2022-01-26 22:47:55 · 151 阅读 · 0 评论 -
leetcode108. 将有序数组转换为二叉搜索树
一:题目二:上码/** * 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(nul原创 2022-01-26 21:04:45 · 225 阅读 · 0 评论 -
leetcode669. 修剪二叉搜索树
一:题目二:上码/** * 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(null原创 2022-01-26 20:37:05 · 185 阅读 · 0 评论 -
leetcode450. 删除二叉搜索树中的节点(详解)
一:题目二:上码1.确定递归函数和参数TreeNode* deleteNode(TreeNode* root, int key)这里的返回参数 我们也用一个指针接住,反正我们最终是返回的整棵树(如果没找到那就是空)2.确定递归函数的终止条件if(root == NULL) return root;3.确定递归函数递归体如果找到了目标值key(1):(如果root左右孩子都为空的话,直接删除)返回NULL的根节点.(层层往上返回,最终返回到根节点)(2):(如果root左孩子不空,右原创 2022-01-25 21:49:03 · 454 阅读 · 4 评论 -
leetcode701. 二叉搜索树中的插入操作
一:题目二:上码/** * 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(null原创 2022-01-23 23:24:45 · 81 阅读 · 0 评论 -
leetcode235. 二叉搜索树的最近公共祖先
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* lowestCommonAncesto.原创 2022-01-23 22:36:00 · 176 阅读 · 0 评论 -
leetcode236. 二叉树的最近公共祖先
一:题目二:上码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: /** 思路:1.这里原创 2022-01-23 22:20:16 · 104 阅读 · 0 评论 -
leetcode530. 二叉搜索树的最小绝对差
一:题目二:上码注意题目中是二叉搜索树(那么中序遍历的结果就是升序的)/** * 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(原创 2022-01-23 20:00:42 · 181 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
一:题目二:上码/** * 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(null原创 2022-01-19 21:43:02 · 402 阅读 · 0 评论 -
leetcode700. 二叉搜索树中的搜索
一:题目二:上码/** * 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(null原创 2022-01-18 23:10:55 · 167 阅读 · 0 评论 -
leetcode654. 最大二叉树
一:题目二:思路1.这是构造二叉树,我们一般通过前序遍历来构造二叉树2.我们是通过找到一个最大值,这个最大值的所对应下标的右边是右子树,下标的左边是左子树3.通过递归构造二叉树1>:递归函数的参数和返回值TreeNode* constructMaximumBinaryTree(vector& nums)(我们返回的是一个指针所以是 TreeNode*类型的)2>:递归函数的终止条件如果 数组元素就剩下一个元素,那么的话就可以终止了if(nums.size().原创 2022-01-18 20:21:41 · 612 阅读 · 0 评论 -
leetcode112. 路径总和
一:题目二:上码/** * 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(null原创 2022-01-14 22:45:31 · 177 阅读 · 0 评论 -
leetcode513. 找树左下角的值
一:题目二:上码/** * 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(null原创 2022-01-14 22:31:37 · 82 阅读 · 0 评论 -
leetcode404. 左叶子之和
一:题目二:上码/** * 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(nul.原创 2022-01-14 22:16:02 · 260 阅读 · 0 评论 -
leetcode257. 二叉树的所有路径(两种做法)
一:题目二:上码1:DFS/** * 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), rig.原创 2022-01-14 21:35:07 · 126 阅读 · 0 评论 -
leetcode110. 平衡二叉树
一:题目二:思路1.高度:每个节点的高度是从该节点到叶节点的(节点个数 包括该节点)深度:每个节点到根节点的(节点个数 包括该节点)2.我们这里在遍历二叉树求取节点的左右子树的高度的时候(采用的是后序遍历(左右中))从下往上3.递归三步走1>:确定递归函数的参数类型和返回值(其参数是传入的根节点 我们返回的类型为int 因为我们是要求的是高度)int getDepth(TreeNode* root)2>:确定中止条件if(root == NULL) return 0; //.原创 2022-01-14 20:27:25 · 87 阅读 · 0 评论 -
leetcode222. 完全二叉树的节点个数(两种做法)
一:题目二:今天不上菜 上码了方法一:前序遍历 求解/** * 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), lef.原创 2022-01-13 23:12:40 · 184 阅读 · 0 评论 -
leetcode101. 对称二叉树(两种做法)
一:题目二:上码方法一:队列/** * 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), r.原创 2022-01-13 21:52:32 · 72 阅读 · 0 评论 -
leetcode111. 二叉树的最小深度(层序遍历10)
一:题目二:上码/** * 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(nul.原创 2022-01-13 20:43:57 · 67 阅读 · 0 评论 -
leetcode104. 二叉树的最大深度(层序遍历09)
一:题目二:上码/** * 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(nul.原创 2022-01-13 20:24:50 · 68 阅读 · 0 评论 -
leetcode117. 填充每个节点的下一个右侧节点指针 II(层序遍历08)
一:题目二:上码/*// 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-01-13 20:14:20 · 88 阅读 · 0 评论 -
leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)
一:题目二:上码/*// 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-01-13 20:11:07 · 70 阅读 · 0 评论 -
leetcode 515. 在每个树行中找最大值(层序遍历06)
一:题目二:上码/** * 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(null原创 2022-01-12 23:30:15 · 159 阅读 · 0 评论 -
leetcode429. N 叉树的层序遍历(层序遍历05)
一:题目二:上码/*// 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; chil原创 2022-01-12 22:53:33 · 69 阅读 · 0 评论