Leetcode
星空是梦想
广州程序员一枚~
展开
-
动态规划算法详解
首先,我们看一下官方定义: 定义: 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决...原创 2019-10-17 15:40:45 · 733 阅读 · 0 评论 -
Leetcode 最小栈问题
今天在Leetcode刷了一道关于最小栈的问题,题目如下: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 示例: MinStack minStack = new MinStack(); minStack....原创 2019-04-27 10:29:42 · 626 阅读 · 0 评论 -
求数据流中的第K大元素
我们可以使用 Java内部提供的优先级队列PriorityQueue,PriorityQueue是一个内部能够自动排序的队列,往PriorityQueue添加一个元素后,它能自动给整个序列重新排序,确保整个序列从队头到队尾按从小到大排列。 PriorityQueue的底层实现是一个小顶堆。 另外,题目要求找到数据流中第K大元素,我们可以限定PriorityQueue最大容量为K,这样PriorityQueue按从小到大排列之后,首元素就是我们要的元素,也就是第K大元素。原创 2019-04-29 22:30:22 · 644 阅读 · 0 评论 -
使用递归判断二叉树对称
使用递归实现的广度优先算法: 先判断根节点 a 的左节点 b 和右节点 c 想不想等,不相等则返回false,相等的话,递归判断 b 的左子树 d 和 c 的右子树 g 是否相等、b 的右子树e 和 c 的左子树 f 是否相等,如果相等,继续递归。原创 2019-04-30 00:05:24 · 796 阅读 · 0 评论