sorting algorithm
USC_ECE
这个作者很懒,什么都没留下…
展开
-
LeetCode 347. Top K Frequent Elements
借助 哈希表 来建立数字和其出现次数的映射,遍历一遍数组统计元素的频率 维护一个元素数目为 kk 的最小堆 每次都将新的元素与堆顶元素(堆中频率最小的元素)进行比较 如果新的元素的频率比堆顶端的元素大,则弹出堆顶端的元素,将新的元素添加进堆中 最终,堆中的 kk 个元素即为前 kk 个高频元素 class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> co原创 2020-06-26 06:21:49 · 91 阅读 · 0 评论 -
LeetCode 692. Top K Frequent Words
这道题的解法其实和 451. Sort Characters By Frequency 几乎差不多。都是先用一个HashMap统计频率,然后再创建一个PriorityQueue对String进行排序,最后输出前k个String。我之前写的是lambda表达式,这次则采用了匿名类写法。https://blog.csdn.net/qq_31361913/article/details/106455387 class Solution { public List<String> topKF原创 2020-06-05 08:30:16 · 89 阅读 · 0 评论 -
LeetCode 451. Sort Characters By Frequency
1. Priority Queue class Solution { public String frequencySort(String s) { Map<Character, Integer> count = new HashMap<>(); for(char c: s.toCharArray()){ count.put(c, count.getOrDefault(c, 0) + 1); }原创 2020-05-31 14:45:25 · 107 阅读 · 0 评论 -
MergeSort
Method 1 (for beginners) class Solution { public int[] sortArray(int[] nums) { if(nums == null || nums.length == 1){ return nums; } return mergeSort(nums, 0, nums.length - 1); } private int[] mergeSor.原创 2020-05-31 11:34:24 · 223 阅读 · 0 评论 -
Leetocde 215. Kth Largest Element in an Array
这是一道让我收获很大的题,解题思路是使用quick select排序。首先选出一个pivot(为了方便,把数组的最后一个元素nums[high] 设置成pivot), 然后扫描整个数组。使用了两个指针: i and j,[low, i) 是小于pivot的元素,[i, j) 是大于pivot的元素,[j, high)是未知探索区域。当扫描完整个数组后,将 nums[i] 和 nums[high] 交换位置,这样 index为 i 的 元素即 pivot 在整个数组的位置已经固定下来,我们数一下pivot从大原创 2020-05-28 14:16:18 · 137 阅读 · 0 评论
分享