leetcode
Leonardo_KY
Learning by doing!
展开
-
一篇文章解决所有常见“零钱问题”-Java贪心+DP
1. 无限个数的凑零钱问题我们经常会遇到这种问题(其实在生活中也很常见):-----------例1: 设有n种不同面值的硬币,现要用这些面值的硬币来找开待凑钱数m,可以使用的各种面值的硬币个数不限。 找出最少需要的硬币个数?如:有4种硬币,分别是1,2,5,10; 现在需要用最少硬币凑出来目标值:23,怎么做?------------很明显,我们一眼就可以看出来,最少4个(2个10,1个2,1个1). 但是计算机怎么解决呢?以下介绍了两种方法,分别是常见的贪心...原创 2020-09-03 18:15:10 · 1124 阅读 · 0 评论 -
单调队列详细图解-leetcode239滑动窗口最大值
1. 单调队列(双端队列)核心思想是维持deque/双端队列中的元素保持递增or递减。使用该数据结构的优点是deque在队列两端都可以添加、删除元素,这里借助了它其中4种常数时间复杂度的操作(java):offerLast(n)、getFirst()、pollFirst()、pollLast()。单调栈介绍详见:https://blog.csdn.net/LutherK/article/details/107023543另外:单调队列还被应用于“多重背包...原创 2020-08-24 17:12:28 · 402 阅读 · 0 评论 -
LeetCode42-接雨水-图解-四种解法-DP/双指针/单调栈/暴力-Java
1 题目题目链接:https://leetcode-cn.com/problems/trapping-rain-water/接雨水问题在leetcode中是“困难”,但同时也是面试中常遇到的问题。1.1 题目描述:给定n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例:输入: [0,...原创 2020-07-04 11:06:21 · 920 阅读 · 0 评论 -
单调栈-图解-LeetCode84柱状图中最大的矩形
概念:单调栈(monotone-stack)是指栈内元素(栈底到栈顶)都是(严格)单调递增或者单调递减的。如果有新的元素入栈,栈调整过程中 *会将所有破坏单调性的栈顶元素出栈,并且出栈的元素不会再次入栈* 。由于每个元素只有一次入栈和出栈的操作,所以 *单调栈的维护时间复杂度是O(n)* 。单调栈性质:1. 单调栈里的元素具有单调性。2. 递增(减)栈中可以找到元素左右两侧比自身小(大)的第一个元素。我们主要使用第二条性质,该性质主要体现在栈调整过程中,下面以递增栈为例(假设所有元素都是唯一),原创 2020-06-29 17:00:57 · 7071 阅读 · 2 评论 -
图解递归算法-清晰易懂
什么是递归?在高级语言中,调用自己和其它函数没有本质的不同。我们把一个直接用自己或通过一系列的调用语句间接地调用自己的函数,称作递归函数。每个递归函数必须至少有一个条件,满足时递归不再执行,即不再引用自身而是返回值退出。 简单地说,就是如果在函数中存在着调用函数本身的情况,这种现象就叫递归。递归的两个必要条件 1、存在限制条件,当满足这个...原创 2020-03-23 14:38:53 · 9161 阅读 · 0 评论 -
由不完全数组构造非完全(任意)二叉树
构造二叉树&4种遍历方法 目的:通过一个任意数组(可以包含Null,而且空的节点没必要全部用Null值填充)来构造一个任意形式的二叉树(可以是完全二叉树,也可以是非完全二叉树)。 看网上好多教程由数组构造二叉树都是“完全二叉树”,即使可以产生非完全二叉树也必须将空节点全部用Null表示填入数组中(这样其实就跟完全二叉树等效了)。这里用Python2和Ja...原创 2020-03-18 00:15:07 · 717 阅读 · 0 评论