- 博客(4)
- 收藏
- 关注
转载 【链表 + 迭代解法 + 进阶递归解法】21.合并两个有序的链表
首先,我们设定一个哨兵节点 prehead ,这可以在最后让我们比较容易地返回合并后的链表。然后,我们重复以下过程,直到 l1 或者 l2 指向了 null :如果 l1 当前节点的值小于等于 l2 ,我们就把 l1 当前的节点接在 prev 节点的后面同时将 l1 指针往后移一位。由于输入的两个链表都是有序的,所以不管哪个链表是非空的,它包含的所有元素都比前面已经合并链表中的所有元素都要大。如何递归:我们判断 l1 和 l2 头结点哪个更小,然后较小结点的 next 指针指向其余结点的合并结果。
2022-11-02 15:11:35 121 1
原创 【栈 + 哈希表】20.有效的括号
栈的特点是“先进后出”,对栈的操作有入栈(push)、出栈(pop)。在本题中,遇到左括号时入栈,遇到匹配的右括号出栈,若遍历完字符串后stack为空,则返回true,否则返回false。看到匹配括号类型的题目,首先应该想到用栈解决。哈希表用来存储括号字典。
2022-11-02 14:23:01 80
原创 【链表+快慢指针】19.删除链表的倒数第N个节点
使用快慢指针,快指针从head开始向后移动n次,随后慢指针从头节点开始跟快指针一起移动,直到快指针下一位为空,此时慢指针恰好指向需要删除的节点的前置节点。哑节点是在处理与链表相关的操作时,设置在链表头之前的指向链表头的节点,用于简化与链表头相关的操作。初始化操作:ListNode dummyNode = new ListNode(0,head);注意判断空链表以及仅有一个元素的链表。
2022-11-01 17:49:38 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人