
LeetCode
记录LeetCode刷题之旅
Gopher大威
双非硕士一枚,自学转计算机,实习,秋招拿下腾讯、华为、京东、360、顺丰、深信服等公司offer。专注于分享计算机基础知识,数据结构与算法,面经等。
展开
-
你还在递归遍历二叉树吗?你要的迭代模板在这里
一、递归法递归三部曲:1、确定递归函数的参数和返回值void recursion(TreeNode *root)2、确定终止条件当前节点为空的时候,就返回if(!root) return;3、确定单层递归的逻辑//这里是前序遍历cout << root->val << endl;preorder(root->left);preorder(root->right);我们知道,前序遍历二叉树就是【中左右】,中序遍历二叉树就是【左中右】,后序原创 2020-08-31 12:08:48 · 405 阅读 · 0 评论 -
从底层认识priority_queue到用priority_queue解决有关顺序大小的题
一、认识priority_queuepriority_queue,即优先级队列,顾名思义,是一个拥有权值概念的queue,它允许加入新元素、移除旧元素、审视元素值等功能。由于这是一个queue,所以只允许在底端加入元素、并从顶端取出元素,除此之外,别无其他存取元素的途径。因为它不提供遍历的功能,也不提供迭代器。插入和删除元素的时候,会保证队头的元素一定是权值最大(小)的。究竟是最大还是最小,根据我们写的比较函数来实现。下文会有这方面的总结。那么大概了解priority_queue是什么样的数据结构之后,原创 2020-08-28 20:59:51 · 681 阅读 · 0 评论 -
单调栈解决Next Greater Number一类题
单调栈是什么?单调栈使得每次新元素入栈后,栈内元素都保持有序(单调递增或者单调递减)。单调递增栈:栈中数据出栈的序列为单调递增序列。单调递减栈:栈中数据出栈的序列为单调递减序列。注意:这里所说的递增递减是出栈的顺序,不是栈中数据的顺序。单调栈的应用通过使用单调栈,可以访问到下一个比它大(小)的元素。也就是说在队列或数组中,我们需要通过比较前后元素的大小关系来解决问题时,需要使用单调栈。例如,给一个数组[2, 1, 2, 4, 3],返回每个元素后面第一个比它自身大的数,如果没有就返回-1。第原创 2020-07-01 14:48:19 · 527 阅读 · 0 评论 -
LeetCode641设计循环双端队列
一、题目设计实现双端队列。你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。deleteFront():从双端队列头部删除一个元素。 如果操作成功返回 true。deleteLast():从双端队列尾部删除一个元素。如果操作成功返回 true。getFront():从双端队列头部原创 2020-06-24 13:06:42 · 263 阅读 · 0 评论 -
递归问题的三部曲配LeetCode题讲解 c/c++/java三种语言都有
最近在刷LeetCode的时候,遇到了很多可以用递归方法的题,但是对于递归求解还比较懵*,不知道怎么下手,自从看了mata川这位大佬的博客,豁然开朗。本文也是转载至其博客:https://lyl0724.github.io/2020/01/25/1/原博主用了LeetCode中的三道题来讲解,都是Java实现的,对于代码实现部分,我分别用C、C++和Java来实现,方便不同语言使用者理解。一、...转载 2020-05-06 15:15:20 · 362 阅读 · 0 评论 -
LeetCode面试题02.04分割链表和86分隔链表题解总结
面试题02.04、分割链表其实我自己一开始看到这个题目的时候,是一脸懵* 的,后来结合着英文版的题目,才把题目意思给搞懂。个人觉得,主要是这个示例整的,让人有点迷。我觉得应该加上一句:答案不唯一或者左右部分内部节点无顺序要求。(即不必考虑元素的相对位置)题目的意思就是:把小于x的节点放在大于或等于x对的节点的前面。例如: [1,4,3,2,5,2] 3 ->...原创 2020-04-29 15:31:51 · 361 阅读 · 0 评论 -
LeetCode-287 寻找重复数 多种解法 通俗易懂的思路分析
一、题目如果没有说明中的第一条限制,可以对数组进行排序,然后将每个元素与前一个元素进行比较。如果没有说明中的第二条限制,可以用哈希数组存储原数组中的每一个数字,存储的个数大于1,就说明是重复的数。如果没有说明中的第三条限制,可以用两个for循环将数组中的每一个数和其后面的每一个数对比。下面,我们来看一下,符合要求的解法。二、遍历一遍数组,对访问过的元素做标记,来寻找重复的数首先,该方...原创 2020-04-27 17:39:58 · 586 阅读 · 0 评论 -
LeetCode-142一张图搞懂环形链表II(肯定看得明白)
一、题目这道题目是141.环形链表的加强版 https://leetcode-cn.com/problems/linked-list-cycle/description/二、解题思路这类链表题目一般都是使用双指针的方法来解决,例如寻找距离尾部第K个结点、寻找环入口、寻找公共尾部入口等。三、算法分析设快慢两个指针fast,slow指向链表头部head,fast每次走2步,slow每次走1...原创 2020-04-24 21:42:23 · 731 阅读 · 2 评论 -
疫情之下,LeetCode994“腐烂的橘子”告诉我们为什么要“少聚集”
题目:在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例2:输入:[[2,1,1]...原创 2020-03-05 23:40:05 · 419 阅读 · 0 评论