05 2024 档案
摘要:513.找树左下角的值 题目链接 文章讲解 视频讲解 class Solution { public: int maxDepth = INT_MIN; int result; int findBottomLeftValue(TreeNode* root) { int depth = 0; trave
阅读全文
摘要:110.平衡二叉树 题目链接 文章讲解 视频讲解 定义:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1 递归法(后序) class Solution { public: bool isBalanced(TreeNode* root) { if(root == nullptr) return
阅读全文
摘要:104.二叉树的最大深度 题目链接 文章讲解 视频讲解 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数(前序遍历) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数(后序遍历) 递归法 // 二叉树的最大高度和最大深度相同,可以求最大高度来表示最大深度 class Solut
阅读全文
摘要:102.二叉树的层序遍历 题目链接 文章讲解 视频讲解 思路:栈对应深度优先遍历,而广度优先遍历使用的是队列 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> a
阅读全文
摘要:递归法 文章讲解 视频讲解 递归三要素: 1 确定递归函数的参数和返回值 2 确定终止条件 3 确定单层递归的逻辑 前序遍历 题目链接 递归的参数和返回值:传入当前节点和保存结果集的数组,不需要返回值 终止条件:当前节点为空时 单层递归逻辑:保存当前节点的值到结果集中 class Solution
阅读全文
摘要:239. 滑动窗口最大值 题目链接 文章讲解 视频讲解 思路:使用单调队列,来维护有可能成为最大值的元素; 当窗口向右滑动时,判断移除的元素是否是队首元素如果是的话出队; 新加入的元素依次和队尾元素作比较,如果大于队尾元素则将队尾元素循环出队,这样可以保证队列中始终维持一个窗口中当前的最大值,和将来
阅读全文
摘要:string 介绍 c++支持两种类型的字符串,一以NULL结尾的c风格字符串;二string类型的字符串 头文件 string是basic_string类模板使用char特化的类型 #include <string> typedef basic_string<char, char_traits<c
阅读全文
摘要:20. 有效的括号 题目链接 文章讲解 视频讲解 思路:遍历字符串,如果栈不为空,则进行匹配 如果匹配则出栈,否则入栈 如果栈为空,直接入栈 遍历结束后栈为空则说明全部匹配,否则没有全部匹配 class Solution { public: bool isValid(string s) { stac
阅读全文
摘要:stack 介绍 先进后出的适配器 头文件 #include <stack> template <class Type, class Container = deque <type>> class stack 初始化 stack(); // 使用容器来构造一个栈,并保持原容器中的元素顺序 expli
阅读全文
摘要:vector 随机访问 在序列末尾插入和删除元素为常量时间,而在中间插入和删除元素需要线性时间 介绍 vector为可变长的数组(动态数组),定义的vector数组可以随时添加和删除元素 当vector容量不足以容纳新增元素时会扩容为两倍(不同编译器有不同的实现,GCC以两倍扩容),需要将元素复制到
阅读全文
摘要:344.反转字符串 题目链接 文章讲解 视频讲解 时间复杂度 o(n) 空间复杂度 o(1) 思路:双指针解决,和翻转数组一样 class Solution { public: void reverseString(vector<char>& s) { int left = 0, right = s
阅读全文
摘要:四数相加II 题目链接 文章讲解 视频讲解 时间复杂度 o(n2) 空间复杂度 o(n) class Solution { public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vec
阅读全文
摘要:242.有效的字母异位词 题目链接 文章讲解 视频讲解 时间复杂度 o(n) 空间复杂度 o(n) class Solution { public: bool isAnagram(string s, string t) { unordered_map<char, int> s_map, t_map;
阅读全文
摘要:二分查找 二分法查找单个值 题目:给定一个n个有序的(升序)数组nums和一个目标值target,写一个函数搜索nums中target,如果目标值存在返回下标,否则返回-1; 关键词:有序数组,无重复元素 难点:区间选择及循环不变量 在每次循环中要坚持循环不变量原则(名字不重要,怎么做很重要) 如果
阅读全文
摘要:23.两两交换链表中的两个节点 题目链接 文章讲解 视频讲解 时间复杂度 o(n) 空间复杂度 o(1) tips: 画图,并将每一步操作用伪代码写出来,然后将代码理顺可以避免修改代码的麻烦 初始化的时候就要将previous初始化为current的前一个节点,这样可以保证循环的第一步满足循环要求
阅读全文
摘要:203.移除链表元素 题目链接 https://leetcode.cn/problems/remove-linked-list-elements/ 文章讲解 https://programmercarl.com/0203.移除链表元素.html#算法公开课 视频讲解 https://www.bili
阅读全文
摘要:977.有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 文章讲解:https://programmercarl.com/0977.有序数组的平方.html 视频讲解: https://www.bilibili.
阅读全文
摘要:704.二分查找 题目链接:https://leetcode.cn/problems/binary-search/ 文档讲解:https://programmercarl.com/0704.二分查找.html 视频讲解:https://www.bilibili.com/video/BV1fA4y1o
阅读全文