leetcode
文章平均质量分 85
技不如人,甘拜下风
这个作者很懒,什么都没留下…
展开
-
Topk问题
题目描述 从n个未排序的数中得到的最大的k个数,称为TopK问题。(最小的k个数做法也相似) 也可能是这样的描述: 给定 100 个 int 数字,在其中找出最大的 10 个; 给定 10 亿个 int 数字,在其中找出最大的 10 个(这 10 个数字可以无序); 给定 10 亿个 int 数字,在其中找出最大的 10 个(这 10 个数字依次排序); 给定 10 亿个不重复的 int 数字,在其中找出最大的 10 个; 给定 10 个数组,每个数组中有 1 亿个 int 数字,在其中找出最大的 10原创 2022-02-22 19:43:59 · 373 阅读 · 0 评论 -
p5-哈希表+有序表+链表
p5-set+map+TreeSet+TreeMap set与map set与map区别仅在于有无伴随数据,其他部分是相同的 增 put, 删 remove, 改put, 查get; 时间是常数级别,但可能是一个比较大的常数 哈希表内放入的是基础类型,如Integer、String(虽然String不是基础类型,但也会这样操作),是按值传递,哈希表会拷贝一份进去,内存占用就是该数据本身。 哈希表内放的不是基础类型,如自定义的Node、Student,是按引用传递,哈希表不会拷贝东西进去,而是记录内存地址,原创 2021-09-02 23:00:22 · 120 阅读 · 0 评论 -
p4-堆+桶排序
p4 堆排序、桶排序、排序总结 堆 堆是一个完全二叉树。用数组对应完全二叉树,则i位置左孩子为2*i+1,右孩子为2*i+2,父为(i-1)/2。 堆结构重要性大于堆排序 大根堆小根堆 对于每一颗子树,其最大值都是头节点的值。 构建堆的过程:heapInsert 对于每一个新节点,来了之后,递归的和自己父亲比较,比父亲大则交换,直到到头或者没父亲大了。时间复杂度O(logN) 调整堆:heap 对于一个需要调整的节点(如删除堆顶时,将堆顶与堆尾进行交换,此时堆顶需要调整),要寻找其左右孩子,获得大的进行交换原创 2021-09-02 22:59:51 · 151 阅读 · 0 评论 -
p3-归并+快排
p3 O(NlogN)的排序 master公式计算递归方法的时间复杂度 如果递归行为满足,母递归行为每次均拆分为N/b规模的子递归行为,而且总额外时间复杂度(除去调用子问题)为O(N^d),那么总问题的时间复杂度即可以计算。 公式如下: T(N) = a*T(N/b) + O(N^d) log(b,a) > d -> O(N ^ log(b,a)) log(b,a) = d -> O(N ^ d * log(N)) log(b,a) < d -> O(N ^ d) 注:log原创 2021-09-02 22:59:20 · 102 阅读 · 0 评论