LeetCode Lect7 堆及其应用】的更多相关文章

概述 堆是一颗完全二叉树.分为大根堆(父节点>=所有的子节点)和小根堆(父节点<=所有的子节点). 插入.删除堆顶都是O(logN),查询最值是O(1). 完全二叉树(Complete Binary Tree) 若设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树. 完全二叉树是由满二叉树而引出来的.对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对…
链接:https://leetcode.com/tag/heap/ [23] Merge k Sorted Lists [215] Kth Largest Element in an Array (无序数组中最小/大的K个数)(2018年11月30日第一次复习) 给了一个无序数组,可能有重复数字,找到第 k 个最大的元素并且返回这个元素值. 题解:直接用直接用个堆保存数组中最大的 K 个数.时间复杂度是 O(NlogK). //时间复杂度是 O(NlogK), 用堆辅助. class Solut…
堆专题 参考了力扣加加对与堆专题的讲解,刷了些 leetcode 题,在此做一些记录,不然没几天就忘光光了 力扣加加-堆专题(上) 力扣加加-堆专题(下) 总结 优先队列 // 1.java中有优先队列的实现:默认是小顶堆 PriorityQueue<Integer> minHeap = new PriorityQueue<>(3); maxHeap.offer(1); maxHeap.offer(2); maxHeap.offer(3); System.out.println(m…
传统的哈希表 对于长度为n的哈希表,它的存储过程如下: 根据 key 计算出它的哈希值 h=hash(key) 假设箱子的个数为 n,那么这个键值对应该放在第 (h % n) 个箱子中 如果该箱子中已经有了键值对,就使用开放寻址法或者拉链法解决冲突 哈希冲突 如果不同字符串被hash到了同一个位置,称为哈希冲突.解决哈希冲突的常用办法有以下几种: 拉链法(开哈希) 在使用拉链法解决哈希冲突时,对于每一个数组位置,放置的元素相当于一个链表,属于同一个箱子的所有键值对都会排列在链表中.当有冲突时,我…
leetcode链表部分题目 https://zhuanlan.zhihu.com/p/29800285 <[Leetcode][链表]相关题目汇总/分析/总结> leetcode堆部分题目 https://www.cnblogs.com/zhangwanying/p/9357141.html <[LeetCode]堆 heap(共31题)> leetcode二叉树部分题目 https://blog.csdn.net/qqxx6661/article/details/7622347…
本文介绍LeetCode上有关栈.链表.堆和队列相关的算法题的考点,推荐刷题20道.具体考点分类如下图: 一.栈 1.数学问题 题号:85. 最大矩形,难度困难 题号:224. 基本计算器,难度困难 题号:975. 奇偶跳,难度困难 2.字符串或数组问题 题号:316. 去除重复字母,难度困难 题号:402. 移掉K位数字,难度中等 3.栈的设计和应用问题 题号:341. 扁平化嵌套列表迭代器,难度困难 题号:636. 函数的独占时间,难度中等 二.链表 1.排序问题 题号:23. 合并K个排序…
题目 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素. 请注意,它是排序后的第k小元素,而不是第k个元素. 示例: matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ], k = 8, 返回 13. 说明: 你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2 . 解答 这个问题和Leetcode 215笔记非常相似,可以用相同的几种思路解决掉.其中BFPRT时间复杂度O(N) 但这个题的输入是一个有序的矩…
题目 给定一个非空的整数数组,返回其中出现频率前 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 是数组的大小. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problem…
题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kth-largest-ele…
https://leetcode.com/problems/min-stack/ #include <vector> #include <queue> #include <map> #include <iostream> using namespace std; class MinStack { public: vector<int> vec; priority_queue<int,vector<int>,greater<…