![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 75
Leetcode复盘笔记
Al资料站与复盘笔记
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题复盘笔记:打爆二叉树(续五)(搜索树,二叉树最近公共祖先)
在此非常感谢“代码随想录”的通俗易懂的总结!(致敬叶师傅和李小龙)“我不害怕曾经练过一万种踢法的人,但我害怕一种踢法练过一万次的人”(by 叶师傅的徒弟Bruce Lee)今天继续打5道,加油,冲冲冲!具体题目题目1:700. 二叉搜索树中的搜索题目描述:给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。C++代码二叉搜索树的遍历方式,因为二叉搜索树的有序性,遍历的时候要比普通二.原创 2021-03-21 20:01:35 · 157 阅读 · 0 评论 -
LeetCode刷题复盘笔记—867. 转置矩阵
题目:867. 转置矩阵给你一个二维整数数组 matrix, 返回 matrix 的转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]一、开始的错误解法class Solution {public: v原创 2021-02-25 22:46:42 · 203 阅读 · 0 评论 -
LeetCode刷题复盘笔记:打爆二叉树(续四)(路径总和,构造二叉树,最大二叉树)
在此非常感谢“代码随想录”的通俗易懂的总结!(致敬叶师傅和李小龙)“我不害怕曾经练过一万种踢法的人,但我害怕一种踢法练过一万次的人”(by 叶师傅的徒弟Bruce Lee)今天继续打5道,加油,冲冲冲!具体题目题目1:112. 路径总和题目描述:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。示例 1:输入:root.原创 2021-03-21 18:05:06 · 239 阅读 · 0 评论 -
LeetCode刷题复盘笔记:打爆二叉树(续一)(翻转,N叉树前后序遍历,对称二叉树)
我要打六个——打爆层序遍历在此非常感谢“代码随想录”的通俗易懂的总结,昨天一口气打了六个,感觉意犹未尽,今天继续打,怎么说,先凑10个吧!(致敬叶师傅和李小龙)“我不害怕曾经练过一万种踢法的人,但我害怕一种踢法练过一万次的人”(by 叶师傅的徒弟Bruce Lee)今天是2021年3月15日,昨天龙抬头和白色情人节的“双节”刚刚过去,第一次一口气刷了6道中等难度Leetcode题。今天又迎来了“3.15——国际消费者权益日”,那就今天继续再打4道,怎么说都要先凑齐10个!加油,冲冲冲!一、原创 2021-03-16 16:29:12 · 205 阅读 · 0 评论 -
LeetCode刷题复盘笔记—434. 字符串中的单词数
题目:434. 字符串中的单词数题目描述:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。一、正常思路count记录单词数量,为了防止有空字符串或者连续多个空格的情况,加一个flag作为条件限定,由于正常情况n个空格对应n+1个单词,所以flag初值要设定为1C++原创 2021-03-05 22:21:08 · 182 阅读 · 0 评论 -
LeetCode刷题复盘笔记—回溯算法(排列、组合问题)
今日主要学习了回溯算法,AC 了排列和组合两道经典回溯题目!题目一:77. 组合题目描述:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:C++代码此代码是经过剪枝优化后的回溯算法:如果for循环选择的起始位置之后的元素个数 已经不足 我们需要的元素个数了,那么就没有必要搜索了1.已经选择的元素个数:path.size();2.还需要的元素个数为: k - path.size();3.在集合n中至多要从该起始位置 : n - (k - path.size(原创 2021-04-10 21:57:10 · 297 阅读 · 0 评论 -
LeetCode刷题复盘笔记—1.两数之和
LeetCode刷题复盘笔记题目:1. 两数之和一、只想到的暴力解法二、哈希表总结 前言:有人相爱,有人夜里开车看海,有人LeetCode第一题暴力解法才解得出来。题目:1. 两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出原创 2021-02-07 17:27:28 · 167 阅读 · 0 评论 -
LeetCode刷题复盘笔记—371. 两整数之和
题目:371. 两整数之和题目描述:不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1一、核心解题思路a ^ b可以得到两数相加不进位的加法结果(a & b) << 1可以得到两数相加产生的进位二、正确解法方法一:递归C++版本:class Solution {public: int getSum原创 2021-03-02 22:22:10 · 70 阅读 · 0 评论 -
LeetCode刷题复盘笔记—栈的应用:匹配问题
今日主要总结一下,栈的应用——匹配问题,在遇到匹配问题时候要能够第一时间想到使用栈数据结构题目一:20. 有效的括号Leetcode题目地址题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false原创 2021-07-20 17:39:28 · 209 阅读 · 0 评论 -
LeetCode刷题复盘笔记—剑指 Offer:替换空格
剑指 Offer 05. 替换空格题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000题目地址C++代码这道题如果开辟额外的空间思路很简单,这里主要讨论一下对于直接在原字符串空间进行替换并且时间复杂度较低的思路方法!如果按照常规想法,把字符串从头开始扫描,遇到空格后把空格后面所有的字符全部后移两位,则很多后面的字符会原创 2021-06-09 22:55:16 · 83 阅读 · 0 评论 -
LeetCode刷题复盘笔记—一文搞懂509. 斐波那契数70. 爬楼梯以及递归时间复杂度计算方法(动态规划系列第一篇)
今日主要学习了动态规划算法,AC 了两道动态规划题目,之后主要研究了一下递归的时间复杂度计算问题,加深一下算法功底!题目一:77. 组合题目描述:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:C++代码此代码是经过剪枝优化后的回溯算法:如果for循环选择的起始位置之后的元素个数已经不足我们需要的元素个数了,那么就没有必要搜索了1.已经选择的元素个数:path.size();2.还需要的元素个数为: k - path.size();3.在集合n中至多要从该原创 2021-04-12 15:48:25 · 905 阅读 · 0 评论 -
LeetCode刷题复盘笔记—268. 丢失的数字
题目:896. 单调数列题目描述:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以原创 2021-03-01 21:42:50 · 157 阅读 · 0 评论 -
LeetCode刷题复盘笔记—206. 反转链表
题目:206. 反转链表题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?一、双指针C++版本:class Solution {public: ListNode* reverseList(ListNode* head) { ListNode *slow=NULL;原创 2021-03-05 22:26:46 · 122 阅读 · 2 评论 -
LeetCode刷题复盘笔记—344. 反转字符串
题目:344. 反转字符串题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”原创 2021-03-05 22:34:15 · 286 阅读 · 1 评论 -
LeetCode刷题复盘笔记:打爆二叉树(续二)(最大、最小深度,节点个数,平衡二叉树)
在此非常感谢“代码随想录”的通俗易懂的总结,昨天前天打了10个,今天继续打!(致敬叶师傅和李小龙)“我不害怕曾经练过一万种踢法的人,但我害怕一种踢法练过一万次的人”(by 叶师傅的徒弟Bruce Lee)今天继续打5道,加油,冲冲冲!具体题目题目1:104. 二叉树的最大深度题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]返.原创 2021-03-17 17:04:11 · 194 阅读 · 0 评论 -
LeetCode刷题复盘笔记:我要打六个——打爆二叉树(层序遍历,右视图,层平均值、最大值)
我要打五个——打爆层序遍历在此非常感谢“代码随想录”的通俗易懂的总结,直接感觉打通层序遍历的任督二脉,可以一口气打五个!今天是2021年3月14日,在这个龙头节和白色情人节的“双节”日子里,第一次一口气刷了5道Leetcode题,一个字——爽,加油,冲冲冲!一、总体思路:层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们最常见的前中后序遍历都不太一样。需要借用一个辅助数据结构即队列来实现,「队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历原创 2021-03-14 18:58:47 · 230 阅读 · 0 评论 -
LeetCode刷题复盘笔记—896. 单调数列
题目:896. 单调数列题目描述:如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,4]输出:true示例 3:输入:[1,3,2]输出:false示原创 2021-02-28 18:51:58 · 167 阅读 · 0 评论 -
LeetCode刷题复盘笔记:打爆二叉树(续三)(路径,相同树,左叶子)
在此非常感谢“代码随想录”的通俗易懂的总结,昨天前天打了10个,今天继续打!(致敬叶师傅和李小龙)“我不害怕曾经练过一万种踢法的人,但我害怕一种踢法练过一万次的人”(by 叶师傅的徒弟Bruce Lee)今天继续打5道,加油,冲冲冲!具体题目题目1:257. 二叉树的所有路径题目描述:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:C++代码方法一、递归方法(规范写法)class Solution {public: i.原创 2021-03-21 18:04:32 · 174 阅读 · 0 评论