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