Blinkbean
LeetCode-206-反转链表 LeetCode-206-反转链表
反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决
2021-04-14
LeetCode-160-相交链表 LeetCode-160-相交链表
编写一个程序,找到两个单链表相交的起始节点。
2021-04-14
LeetCode-236-二叉树的最近公共祖先 LeetCode-236-二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先
2021-04-13
LeetCode-215-数组中的第K个最大元素 LeetCode-215-数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2: 输入: [3,2,3
2021-04-12
LeetCode-20-有效括号 LeetCode-20-有效括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 https://leetcode-cn.co
2021-04-11
算法导论-单数组实现双端队列 算法导论-单数组实现双端队列
栈插入和删除元素只能在同一端进行,队列的插入操作和删除操作分别在两端进行,与它们不同的,有一种双端队列(deque),其插入和删除操作都可以在两端进行。写出4个时间均为O(1)的过程,分别实现在双端队列插入和删除元素的操作,该队列使用一个数
2020-10-07
算法导论-两个栈实现队列 算法导论-两个栈实现队列
用两个栈实现队列,并分析相关队列操作的运行时间。 单栈push和pop的运行时间都为O(1),所以需要考虑的就是两个栈之间切换所用时间。 最坏情况:在push和pop交替操作时,需要将一个栈中的数据转移到另一个栈中,转移所用时间为O(n),
2020-10-07
算法导论-两个队列实现栈 算法导论-两个队列实现栈
用两个队列实现栈,并分析相关栈操作的运行时间。思路同:两个栈实现队列 type DequeStack struct { pushDeque *Deque popDeque *Deque flag bool // true in pus
2020-10-07
算法导论—一个数组中实现两个栈 算法导论—一个数组中实现两个栈
如何在一个数组A[1..n]中实现两个栈,使得当两个栈的元素个数之和不为n时,两者都不会发生上溢。 要求push和pop操作的运行时间为O(1)。 实现: 两个栈分别从数组的两端开始,向中间push元素,直到两个指针相遇。package
2020-10-05