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