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 · 494 阅读 · 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 · 514 阅读 · 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 · 235 阅读 · 0 评论 -
Leetcode HOT100精讲 —— (树)101. 对称二叉树
一:解题 给定一个二叉树,看左右子树是否为镜像对称,某个节点如果他在左子树,从左往右他是第几个节点,那么从该行的右边数,从右往左相同位置他对应的节点值需要相同,这样就算镜像对称。 二:思路 同时遍历一个节点的左右子树,将当前节点的左子树和对应位置的右子树进行递归 对当前两个节点值进行判断,是否为空或者一个为空另一个非空这种条件进行判断并向上返回bool 向父节点返回值,返回当前的判断true或者false class Solution { public: bool isSymmetric(T原创 2021-11-30 10:58:18 · 318 阅读 · 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 · 145 阅读 · 0 评论