leetcode哈希表之第一个只出现一次的字符

2020-10-10
阅读 1 分钟
929
序本文主要记录一下leetcode哈希表之第一个只出现一次的字符题目 {代码...} 题解 {代码...} 小结这里借助LinkedHashMap来计数,最后按顺序遍历,找出count为1的得到第一个只出现一次的字符。doc第一个只出现一次的字符

leetcode哈希表之两数之和

2020-10-09
阅读 1 分钟
1.1k
序本文主要记录一下leetcode哈希表之两数之和题目 {代码...} 题解 {代码...} 小结这里利用HashMap来存储目标值与当前值的差值及其索引,遍历nums数组,遇到存在的key则直接返回。doc两数之和

leetcode队列之设计循环双端队列

2020-10-08
阅读 4 分钟
1.2k
这里采用数组实现,insert操作之前都要先判断是否满了,delete操作之前都要先判断是否空了,对于insertFront及deleteFront都要设置数组元素的拷贝。

leetcode队列之最近的请求次数

2020-10-07
阅读 2 分钟
1.2k
这里使用java内置的queue,在ping的时候,先看下队头元素值是否小于t-3000,若小于则取出来,继续循环;最后将t添加到队列,返回队列的大小。

leetcode栈之二叉树的前序遍历

2020-10-06
阅读 2 分钟
1.2k
这里借助栈来实现二叉树的前序遍历;在每个preTraverse方法里头新建一个栈,push当前node,然后循环pop栈,将元素添加到result中,之后先push右子节点,再push左子节点。

leetcode栈之比较含退格的字符串

2020-10-05
阅读 2 分钟
930
这里借助栈,遍历string的char,遇到#时在栈不为空的时候pop一下,非#时则push数据到栈中;之后对比两个栈的元素来判断是否相等。

leetcode栈之最小栈

2020-10-04
阅读 2 分钟
1.4k
这里再push的时候,计算了min值,同时再min值有更新的时候,先push了上一个min值,最后再push当前的min值;在pop的时候,判断是否等于min值,等于的话,再pop一次,更新当前min值为上一个min值,这里这样子实现是基于题目的假设(pop、top 和 getMin 操作总是在 非空栈 上调用)以及MinStack的调用顺序。

leetcode栈之用队列实现栈

2020-10-03
阅读 2 分钟
1.1k
这里使用了两个LinkedList,在push的时候,offer到a队列,然后再将b队列的元素offer到a队列,再交换a、b队列;pop、top、empty的时候直接操作b队列。

leetcode栈之用两个栈实现队列

2020-10-02
阅读 2 分钟
1.2k
这里使用两个栈,一个用于进栈,一个用于出栈;appendTail的时候先遍历out栈将其元素取出来push到in栈里头,最后在push该value;deleteHead的时候先遍历in栈将其元素取出来push到out栈里头,最后在pop出来。

leetcode栈之有效的括号

2020-10-01
阅读 1 分钟
961
这里借助栈,然后遍历每个char,针对(、[、{分别push对应配对的char,其他的则判断stack是否为空或者pop出来的值是否与之相等,如果不等则返回false,如果遍历完之后,stack不为空则返回false,为空返回true。

leetcode树之对称二叉树

2020-09-30
阅读 2 分钟
1.1k
这里采用递归的方式解决,定义一个compare,然后对比left及right节点,若二者都为null返回true,若其中一个不为null或者值不相等则返回false,值相等的情况下递归执行compare(left.left, right.right)及compare(left.right, right.left)进行比较。

leetcode树之将有序数组转换为二叉搜索树

2020-09-29
阅读 1 分钟
1.6k
这里采用递归的思路,先取l与r的中间值m,根据m构建一个TreeNode,然后通过递归buildTree(nums, l, m - 1)及buildTree(nums, m + 1, r)来设置该node的左右子节点。

leetcode树之二叉树的所有路径

2020-09-28
阅读 2 分钟
1.7k
这里采用递归的思想,设计了solve方法,方法有个集合类型的参数用于收集路径,另外还有一个参数用于表示路径的前缀;每次执行solve方法都将当前节点的val追加在路径前缀,在节点为叶子节点时,将前缀添加到result中并返回;若不为叶子节点则将->拼接到路径前缀中,递归其左右子节点。

leetcode树之二叉树的深度

2020-09-27
阅读 1 分钟
1k
序本文主要记录一下leetcode树之二叉树的深度题目 {代码...} 题解 {代码...} 小结这里采用递归的方式,递归计算maxDepth(root.left)及maxDepth(root.right),最后取它们的最大值+1。doc二叉树的深度

leetcode树之二叉树的层平均值

2020-09-26
阅读 2 分钟
1.1k
这里借助队列进行层次遍历,每次先记录queue的size,然后按size来poll,取出元素累加sum,然后把不为null的node.left及node.right放入到queue中,最后计算sum/size放入到result中。

leetcode树之从根到叶的二进制数之和

2020-09-25
阅读 2 分钟
1.4k
这里采用递归的方法,当node为null时返回0;之后对sum累加当前node.val;若node.left及node.right为null则返回sum,否则递归计算sumNode(node.left, sum)再累加上sumNode(node.right, sum)。

leetcode树之相同的树

2020-09-24
阅读 2 分钟
1.2k
这里采用递归的思路,当p及q都为null返回true;若p和q都不为null且p.val等于q.val那么则递归判断isSameTree(p.left,q.left)及isSameTree(p.right,q.right);其他情况返回false。

leetcode树之二叉搜索树的最近公共祖先

2020-09-23
阅读 2 分钟
960
这里采用递归的思路,并利用二叉搜索树的特性来解题;针对root.val大于p.val及q.val的递归执行lowestCommonAncestor(root.left, p, q);针对root.val小于p.val及q.val的递归执行lowestCommonAncestor(root.right, p, q)。

leetcode树之从翻转二叉树

2020-09-22
阅读 1 分钟
989
序本文主要记录一下leetcode树之从翻转二叉树题目 {代码...} 题解 {代码...} 小结这里采用递归的思路,首先用tmp保存一下left节点,之后递归翻转right节点赋值给left,再递归翻转tmp赋值为right。doc翻转二叉树

leetcode树之从上到下打印二叉树

2020-09-21
阅读 2 分钟
976
这是二叉树层次遍历的一个变种,区别在于每次poll的之前需要先记录下当前queue的size,即当前层的节点个数,然后按这个size去pull。

leetcode树之N叉树的前序遍历

2020-09-20
阅读 1 分钟
1.3k
序本文主要记录一下leetcode树之N叉树的前序遍历题目 {代码...} 题解 {代码...} 小结这里采用递归的方法,与二叉树前序遍历不同的时,N叉树不是遍历左右子树,而是遍历其children。docN叉树的前序遍历

leetcode树之平衡二叉树

2020-09-19
阅读 1 分钟
1.1k
这里采用递归的解法,当root为null的时候返回0,之后递归计算root.left的高度lh,及root.right的高度rh,然后判断左右子树的高度差是否小于等于1,是的话返回该节点的高度,否则返回-1

leetcode树之路径总和

2020-09-18
阅读 1 分钟
1.9k
这里采用递归的方式来求解,递归的终止条件就是root为null或者左右节点为null,此时判断是否有符合条件的sum;之后针对root.left或者root.right递归调用hasPathSum,此时sum传参为sum - root.val

leetcode链表之分割链表

2020-09-17
阅读 1 分钟
1.4k
这里循环遍历链表,需要使用cursor及previous两个指针,它们开始都指向head,然后判断当前节点的值是否小于x,是的话则当前节点与前一个节点的值进行交换,然后同时更新previous指针及cursor指针。

Java15的新特性

2020-09-16
阅读 6 分钟
8.4k
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java20的新特性Java21的新特性Java22的新特性序本文主要讲述一下Java15的新特性版...

leetcode链表之环路检测

2020-09-15
阅读 2 分钟
1.6k
借助额外空间的话,使用HashSet,遍历链表直到游标指针为null或者找到HashSet中存在的元素;如果不借助额外空间的话,先用快慢指针遍历找到相交的节点,若没有相交的节点直接返回,若有相交的节点,则再次从头遍历,同时移动头指针与快慢指针相遇的节点指针,若二者相遇则找到入口节点。

leetcode链表之删除排序链表中的重复元素

2020-09-14
阅读 1 分钟
1.2k
这里使用一个cursor,从head开始,再使用next保存正常遍历时的next,cursor在找到重复节点时修改next为next.next,否则前进一个节点

leetcode链表之两个链表的第一个公共节点

2020-09-13
阅读 2 分钟
2.9k
示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 ...

leetcode链表之删除链表的节点

2020-09-12
阅读 1 分钟
1.1k
序本文主要记录一下leetcode链表之删除链表的节点题目 {代码...} 题解 {代码...} 小结这里的关键在于要设计一个preNode指针维护前一个节点,好进行删除操作docshan-chu-lian-biao-de-jie-dian-lcof

leetcode链表之回文链表

2020-09-11
阅读 1 分钟
1.2k
序本文主要记录一下leetcode链表之回文链表题目 {代码...} 题解 {代码...} 小结这里使用Stack来解决,先遍历一遍放到Stack中,之后再次遍历,挨个跟stack.pop出来的比较docpalindrome-linked-list