![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
sigedengpao
这个作者很懒,什么都没留下…
展开
-
荷兰国旗问题
75.颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]使用一遍排序法来做,本质是快排三个指针,分别指向第一个非0元素,当前下标,第一个非2元素class Solution { void swap(int[]num, int a, int b){原创 2020-06-01 11:56:33 · 93 阅读 · 0 评论 -
最详细的关于比较器的重新实现方法
之前对比较器一直模模糊糊,终于搞清楚了。1. 再定义一个类,让其实现比较器接口Comparator,重写接口中的比较器接口Compare(T o1, T o2)方法比较器类跟原来的类为两个类,原来的类调用比较器方法。class Person{ private int age;}class PersonComparactor implements Comparactor<Person>{ @override public int compare(Person o1, Person原创 2020-05-31 23:07:58 · 421 阅读 · 0 评论 -
出现次数前k多的元素Ⅱ--大顶堆
451.根据字符出现频率排序给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。大顶堆解法维持一个从大到小的优先队列,然后输出前k项。class Solution { class letter{ int fre; char value; letter(原创 2020-05-31 22:54:08 · 286 阅读 · 0 评论 -
出现次数前k多的元素Ⅰ--桶排序
347.前 K 个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。普通做法,先统计各个数的原创 2020-05-26 17:30:06 · 269 阅读 · 0 评论