排序
Vaccy Zhu
自律是解决人生问题最主要的工具,也是解决人生痛苦最重要的方法!
展开
-
有多少小于当前数字的数字-排序1365-python
没看答案,暴力解法时间复杂度O(N^2),排序时间复杂度O(NlogN),所以采用计数排序,时间复杂度O(N)。class Solution: def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]: bucket = [0] * 101 n = len(nums) res = [0] * n for num in nums:原创 2022-05-03 14:19:04 · 308 阅读 · 0 评论 -
数据流的中位数-堆排序295-python&c++
pythonimport heapqclass MedianFinder: def __init__(self): """ initialize your data structure here. """ self.maxHeap = [] self.minHeap = [] self.counter = 0 def addNum(self, num: int) -> None:原创 2021-08-19 14:54:55 · 178 阅读 · 0 评论 -
颜色分类-排序75-C++
算法思想:快速排序class Solution {public: void quickSort(vector<int> & a, int left, int right){ if(left >= right) return; int i = left, j = right; int base = a[left]; while(i < j){ while(a[j] &原创 2021-03-06 17:47:17 · 196 阅读 · 0 评论 -
根据字符出现频率排序-排序451-C++
算法思想:和我写的topK答案思想差不多,都是利用了unordered_map和multimap的特点:创建统计字符出现次数的无序哈希表hashmap;将hashmap中的pair的second和first调换(即出现次数变成关键字,字符变成关键字对应的值),添加到可重复(可重复的原因:有些数值出现的次数可能相同)关键字的有序(greater是按大到小排序)哈希表ordermap中;将ordermap中的关键字对应的值按照关键字数值大小排列组成最终输入字符串res。C++class Solu原创 2021-03-06 17:30:23 · 536 阅读 · 0 评论 -
前K个高频元素(topK)-排序347-c++
算法思想没有用到很复杂的算法思想,就是利用了unordered_map和multimap各自的特点:创建统计数字出现次数的无序哈希表hashmap;将hashmap中的pair的second和first调换(即出现次数变成关键字,数值变成关键字对应的值),添加到可重复(可重复的原因:有些数值出现的次数可能相同)关键字的有序(greater是按大到小排序)哈希表ordermap中;将ordermap中前k个pair的值添加到输出数组res中,即可得到最终输出。C++class Solution原创 2021-03-06 17:00:36 · 214 阅读 · 0 评论 -
数组中的第K个最大元素-排序215-C++&python
堆排序的思想class Solution {public: void swap_element(vector<int>& a, int i, int heapsize){ int l = i * 2 + 1; int r = i * 2 + 2; int current = i; if(l < heapsize && a[l] > a[current]){原创 2021-03-05 22:28:32 · 95 阅读 · 0 评论