![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Amazon高频题
文章平均质量分 67
Ben土豆
这个作者很懒,什么都没留下…
展开
-
[亚麻高频题] - 最大重复元素处理问题
这道题目属于一道模拟题,基本思路就是创建一个HashMap<Integer, LinkedList<Integer>> 来维护数组中数值以及元素对应的位置信息,然后可以创建一个大顶堆来维护重复元素,每一次循环,取出堆中最大元素,找到对应链表中最靠前的两个index,从链表中删除这两个位置,将第二个元素除以2后更新到对应链表中,注意每一个链表要保证有序,所以如果每一次插入链表时要逐个进行比较然后插入。最大重复元素 6,去掉第一个,第二个除以2,数组变为[3, 6, 1, 2, 2]原创 2023-08-21 13:26:41 · 94 阅读 · 0 评论 -
[亚麻高频题] Leetcode 426. Convert Binary Search Tree to Sorted Doubly Linked List (BST转换成双链表)
题目描述 & 链接Leetcode 426:将BST结构转化成双链表结构,使得每一个节点连接他的前驱结点和后继节点,并且头,尾两个节点也要相连。要求不开额外空间题目思路这道题我给点个赞,让我对于中序遍历DFS模板有了更深刻的理解。首先如果可以开额外空间的话怎么做?以为二叉树中序遍历有个隐藏性质:中序遍历中当前节点上一个点即为前驱节点,下一个点即为后继节点。那么可以将BST结构以中序遍历顺序,保存并遍历该数组让每一个点与左右相连即可。如果不使用额外空间应该如何做。我们先看一下BST..原创 2022-02-14 08:05:38 · 354 阅读 · 0 评论 -
[亚麻高频题] Leetcode 1597. Build Binary Expression Tree From Infix Expression (中缀表达式构造二叉表达式树)
题目描述 & 链接Leetcode 1597:根据计算表达式生成二叉树,使得二叉树的中序遍历结果与计算表达式相同题目思路对于计算表达式的题目,通常能使用双栈思路求解,这道题思路与Leetcode 772. Basic Calculator III (计算器 III)基本相同,唯一不同只是处理结果上,之前直接计算出结果即可,这里需要建成二叉树节点,所以数字栈保存的是当前树节点,计算过程是将栈顶pop出来,作为树根,将数字栈pop出两个节点作为左右叶子节点,与树根相连,然后将该树根重新加..原创 2022-02-10 05:09:53 · 7443 阅读 · 0 评论 -
[亚麻高频题] Leetcode 239. Sliding Window Maximum(滑动窗口最大值)
题目描述 & 链接Leetcode 239. Sliding Window Maximum:定义一个窗口大小,求数组从头到尾窗口区域内最大值。题目思路:1. 单调栈这道题目我们需要维护两个东西:一个是区域内最大值;另一个是如果窗口滑动导致当前最大值失效后,潜在的最大值。第一个区间最大值,可以直接以打擂台方式维护,但是潜在最大值我们则需要以大小顺序保存在后面。这里我们可以使用单调栈来进行维护。单调递增递减栈都可以,如果递减栈最大值保存在尾部,然后新加入的元素,根据单调递减关系保存在头.原创 2022-02-01 23:32:23 · 935 阅读 · 0 评论 -
[亚麻高频题] Leetcode 151. Reverse Words in a String(翻转字符串)
题目描述 & 链接Leetcode 151. Reverse Words in a String:将一个包含多个单词的字符串按单词顺序翻转题目思路题目比较直截了当,就是将所有单词逆序组合成最后结果,先通过空格进行分割,然后从后往前遍历合成即可,这里题目说单词之间原先可能存在多个空格,那么分割后的结果存在两种情况:1.空元素(开头,结尾存在空格);2.元素是空格(单词之间有过个空格时)。代码如下:class Solution { public String reverse原创 2022-02-01 22:11:36 · 512 阅读 · 0 评论 -
[亚麻高频题] Leetcode 901. Online Stock Span(在线股票价格跨度)
题目描述&链接Leetcode 901. Online Stock Span:在线接收股票价格,返回前面连续天数股票价格比当前低题目思路1. 暴力枚举寻找比当前元素大的上一个元素位置,又是单调栈思路,不同的是这次输入是Stream输入。最简单粗暴的方法就是从当前位置遍历前面位置,当发现大于当前元素的位置,记录天数。每一次操作时间复杂度:, 空间复杂度:。2. 单调栈该题目的问询明显可以使用单调栈进行求解,但是如果直接按照单调栈模板套用的话,每次操作时间复杂度依然是。如果通..原创 2022-02-01 12:35:46 · 256 阅读 · 0 评论 -
[亚麻高频题] Leetcode 739. Daily Temperatures(每日温度)
题目描述&链接Leetcode 739. Daily Temperatures:一个数组记录每日的温度,输出一个数组每一个元素代表下一个比当前温度高的天数题目思路单调栈经典应用,寻找比当前元素更高的下一个元素位置,维护一个单调递减栈,如果出现比栈顶元素大的新元素,那么就把比新元素小的栈内元素pop出来,当前元素即为这些元素更大的下一个元素位置。Java中使用Stack推荐使用Deque,Java源码对于Deque进行了优化,有效提高了运行速度。代码如下:class Solu..原创 2022-02-01 12:09:11 · 428 阅读 · 0 评论 -
[亚麻高频题] Leetcode 503. Next Greater Element II(下一个大的元素)
题目描述 & 链接Leetcode 503. 下一个更大元素题目思路1. 单调栈单调栈经典应用 -寻找下一个更大元素的位置,这道题不同的是数组是一个循环数组,也就是下一个更大元素位置也可以在当前元素前面。所以不仅要查看后面的元素,也要查看前面元素,对于循环数组的处理一般是将数组拼接成两份,这样循环数组的每一个值都会在当前元素位置中出现一次。然后算法思路根据单调栈模板就可以实现。代码如下:class Solution { public int[] nextGrea..原创 2022-02-01 11:49:27 · 324 阅读 · 0 评论 -
[亚麻高频题] Leetcode 973. K Closest Points to Origin(离原点K个最近的点)
题目描述 & 链接Leetcode 973. K Closest Points to Origin题目思路1. 改写Comparator进行排序这道题目思路比较直观,就是直接对每个点距离进行排序,取TopK个元素,这道题考察Java如何改写比较器。class Solution { public int[][] kClosest(int[][] points, int k) { // comparator 改写 Arrays.sort(po原创 2022-02-01 11:17:38 · 5246 阅读 · 0 评论 -
[亚麻高频题] Leetcode 907. Sum of Subarray Minimums(子数组最小值之和)
题目描述&链接Leetcode 907: 给定一个数组,找到所有子数组最小值,并返回所有最小值之和题目思路1. 暴力枚举直观思路就是通过暴力枚举出所有的子数组,并求所有子数组最小值之和,因为题目子数组是指连续子数组,所有暴力枚举就是枚举起始点和终止点,两层for loop。然后遍历的过程中打擂台保存当前最小值,并求和。直接上代码: public int sumSubarrayMins(int[] arr) { // 暴力求解起点终点 int r.原创 2022-01-30 08:04:58 · 1002 阅读 · 0 评论 -
[亚麻高频题] Leetcode 140. Word Break II
题目描述&链接Leetcode 140:是Leetcode 139. Word Break进阶版,LC139求得是可行性,这道题求得是所有方案。相似题目Leetcode 139:Word BreakLeetcode 472: Concatenated Words题目思路1.DFS搜索既然要求所有方案就避免不了全局遍历,我们可以依照与LC139类似思路求解,从头遍历来寻找匹配的单词,然后从匹配单词后面的index继续搜索,或者跳过这次匹配就这向下找更长的匹配单词,直...原创 2022-01-09 13:29:47 · 319 阅读 · 0 评论 -
[亚麻高频题] Leetcode 139. Word Break
题目描述&链接Leetcode 139:判断字典中的字符能否合并成目标字符串 -这道题只用判断可行性。进阶版Word Break II是需要返回所有可能情况。Note:这题确实出的好,让你同时需要考虑算法和优化处理,这道题AC之路着实坎坷,屡屡尝试都TLE了,最后学会了优化解结果去Lintcode上写又TLE,最后终于弄明白最优解。。。相似题目Leetcode 140:Word Break IILeetcode 472: Concatenated Words题目...原创 2022-01-09 01:53:56 · 296 阅读 · 0 评论 -
[亚麻高频题] Leetcode 1167. Minimum Cost to Connect Sticks
题目描述&链接Leetcode 1167:有一个数组代表一堆木条长度,然后两两合并最后变成一条木头,求最小的cost,这里的cost就是木条长度之和。题目思路这道题相当于就是让我们求这个数组一直加和的最小值,典型的一道比较入门的贪心算法的题目,每一次求和选取当前最小的两个数相加结果一定的最小值。整体思路就是我们维护一个小顶堆,每一次将最上面两个元素出堆进行求和,然后再将求和元素放入堆中,直到堆中只剩一个元素为止。思路比较简单,就直接上代码:public int connect.原创 2022-01-05 13:03:42 · 204 阅读 · 0 评论 -
[亚麻高频题] Leetcode 1152. Analyze User Website Visit Pattern
题目描述&链接Leetcode 1152:这道题感觉题目说明不是很清楚,一看是看的有点懵,没办法高频题咬着牙还是手撕了一下。题目大概意思是有三个数组,username[]列出一系列用户名字, website[]上面每一个用户浏览的网站, timestamp[]上面用户浏览网站的时间戳,题目有一个pattern=String[3]可以对应三个网站,然后有一个对pattern的评分机制,如果pattern中三个网站被某一个用户按照pattern先后时间顺序曾经都浏览过那么就得1分。最后找出字母序较.原创 2022-01-05 12:36:49 · 491 阅读 · 0 评论 -
[亚麻高频题] LCP 19. 秋叶收藏集
题目描述&链接Leetcode - LCP 19:寻找能够满足"rrryyyrr"这种形式的最小翻转次数。题目思路与[亚麻高频题] Leetcode.926属于同类型的题目,稍微加了一点难度。1. 前缀和同样可以使用前缀和进行计算,我们维护一个数组记录第i个位置前"r"树叶的总数,并可以通过前缀和求差来求出相应"y"树叶的个数。不同于LC926的01翻转我们这里要维护三个区间::红树叶1;:黄树叶;:红树叶2[0,end]维护"r..yyy..r"格...原创 2022-01-05 12:15:11 · 313 阅读 · 0 评论 -
[亚麻高频题] Leetcode.926 Flip String to Monotone Increasing
Leetcode 926 反转二进制字符串生成单调递增原创 2022-01-04 14:57:47 · 283 阅读 · 0 评论 -
[亚麻高频题] Leetcode 300. 最长单调递增子序列
Leetcode 300 - 最长单调递增子序列原创 2022-01-04 14:23:08 · 384 阅读 · 0 评论