
Leetcode Hot 100 精讲
本专栏记录力扣上的100个HOT题,并且对每个题目进行精讲,力求帮助初学者深入理解每一道题,轻松自如应付面试
Charles Ray
现就职于某半导体公司。Software Programmer
展开
-
Leetcode HOT100精讲 —— (归并)148. 排序链表+23. 合并K个升序链表
归并思想蓝色部分实际上是合并后向上返回的过程。使用归并排序,分治,解决,合并。分治,每次找到中间节点,将一个链表分解成两个链表,逐渐分分分,直到分到最小单元为每个节点合并:DFS后序遍历,会自底向上,然后从最下层俩俩合并,然后四个四个合并,一直到合并成一个完整链表148. 排序链表时间复杂度O(nlogn):因为链表二分分治,logn , 每两个链表合并要O(n)class Solution {public://使用归并排序,分治,合并。//分治,每次找到中间节点,将一个链表分解成两个原创 2021-12-24 17:21:32 · 523 阅读 · 0 评论 -
Leetcode HOT100精讲 —— (树)104. 二叉树的最大深度
文章目录概述BFS概述该题跟102. 二叉树的层序遍历几乎一样。代码及时空复杂度都一样。不再赘述BFS//使用bfs原理很简单:就是每一层遍历完了对层数++,肯定要遍历到最后一层所以就会得到最大值class Solution {public: int maxDepth(TreeNode *root) { int depth = 0; queue<TreeNode *> q; q.push(root); while (!q.em原创 2021-12-03 18:06:12 · 546 阅读 · 0 评论 -
Leetcode HOT100精讲 —— (树)102. 二叉树的层序遍历
文章目录BFS和DFS模板对比题解一:BFS题解二:DFS (层数表示法)BFS和DFS模板对比void dfs(TreeNode root) { if (root == null) { return; } dfs(root.left); dfs(root.right);}void bfs(TreeNode root) { Queue<TreeNode> queue = new ArrayDeque<>();原创 2021-11-30 11:55:20 · 263 阅读 · 0 评论 -
Leetcode HOT100精讲 —— (树)101. 对称二叉树
一:解题给定一个二叉树,看左右子树是否为镜像对称,某个节点如果他在左子树,从左往右他是第几个节点,那么从该行的右边数,从右往左相同位置他对应的节点值需要相同,这样就算镜像对称。二:思路同时遍历一个节点的左右子树,将当前节点的左子树和对应位置的右子树进行递归对当前两个节点值进行判断,是否为空或者一个为空另一个非空这种条件进行判断并向上返回bool向父节点返回值,返回当前的判断true或者falseclass Solution { public: bool isSymmetric(T原创 2021-11-30 10:58:18 · 340 阅读 · 0 评论 -
Leetcode HOT100精讲 —— (树)617. 合并二叉树
#include #include #include #include <time.h>#include <stdlib.h>#include <stdio.h>using namespace std;struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};//父节点要传给原创 2021-11-02 20:51:46 · 181 阅读 · 0 评论