优先队列
dezhonger
这个作者很懒,什么都没留下…
展开
-
Leetcode 632
给定k个递增的列表找到最短的区间包含这k个列表里每个列表至少一个数贪心地去想,显然这k个数相邻越近,数字越小。那么我们首先拿k个列表最小数,看看答案是多少(最大值-最小值就是答案),然后把最小那个数逐次增大,比如这个数是第一个列表第一个数,那么就替换第一个列表第二个数,然后判答案是否更优,依次比下去。实现的话可以采用heap维护一个大小为k的堆来做 public...原创 2020-02-12 03:03:03 · 208 阅读 · 0 评论 -
Leetcode787
问从s到t最多k+1条边的最小值,不存在返回-1图论题,不会做,感觉比较难理解,应该算是dijkstra算法的应用讲解dijkstra算法:https://www.luogu.com.cn/blog/ztyluogucpp/qian-tan-dijkstra我来解释一下高票里的解法维护一个优先队列,节点内容是到达某个节点用了stop条边的最小值,优先队列按照边权升...原创 2020-02-08 20:19:48 · 344 阅读 · 0 评论 -
Leetcode 855
一行N个位置,两种操作。seat: 每次每个同学坐在一个位置,要满足尽量离最近的同学最远,leave(i), 第i个位置的人起来,保证第i的位置是有人的sol:将相邻的两个人化为一个区间,那么每次seat的位置,就是最远的区间的中点。需要处理边界问题,我们可以虚拟出-1和N两个点,初始化的时候插入(-1, N)这个区间,注意怎么计算区间的distance的。至于怎么...原创 2020-01-28 00:05:03 · 212 阅读 · 0 评论 -
Leetcode 870
给出两个数组,求出A数组的一个排列,使下标相同的对应数有尽量多的数满足A[i] > B[i]这不就是田忌赛马嘛!我们使用贪心的策略如果田忌最快的马比对方最快的马快,就和他比,赢一场否则就用田忌最慢的马去和对方最快的马去比这个题目要输出排列,可以看下代码: public int[] advantageCount(int[] A, int[] B) {...原创 2020-01-11 19:38:46 · 180 阅读 · 0 评论 -
Leetcode 767
重排列一个字符串,使相邻字母不同sol:注意到如果一个字母出现的次数超过一半,就不可能了。接下来使用贪心的思路;构造:每次选择次数最大的且与上次字母不同的加在字符串后,可以通过优先队列维护次数字母的次数 public String reorganizeString(String S) { int[] cnt = new int[26]; ...原创 2019-12-28 16:16:23 · 93 阅读 · 0 评论 -
Leetcode 692
求出现频率最多的k个单词1、使用优先队列解法 public List<String> topKFrequent(String[] words, int k) { List<String> res = new ArrayList<>(); Map<String, Integer> map = new...原创 2019-12-28 15:02:36 · 167 阅读 · 0 评论