数据结构与算法 | 求TopK | 大根堆 解题思路:保持堆的大小为K,然后遍历数组中的数字,遍历的时候做如下判断: * 1. 若目前堆的大小小于K,将当前数字放入堆中。 * 2. 否则判断当前数字与大根堆堆顶元素的大小关系,如果当前数字比大根堆堆顶还大,这个数就直接跳过; * 反之如果当前数字比大根堆堆顶小,先poll掉堆顶,再将该数字放入堆中。 | Java最小堆解决TopK问题_最小堆 java-CSDN博客 (自己实现Heap) . - 力扣(LeetCode) (使用java中的PriorityQueue) |
反转字符串 | 循环或者递归两种方式 | ||
求数组中第二大的数 | |||
LRU淘汰算法 | 双向链表+哈希表 哈希表可以降低查找的时间复杂度 | ||
布隆过滤器 | 由一个二进制数组和一个 Hash 算法组成。值按照提供的 Hash 算法算出对应的 Hash 值,然后将 Hash 值对数组长度取模后得到需要计入数组的索引值,并且将数组这个位置的值从 0 改成 1。在判断一个元素是否存在于这个集合中时,你只需要将这个元素按照相同的算法计算出索引值,如果这个位置的值为 1 就认为这个元素在集合中,否则则认为不在集合中。 | ||
冒泡插入选择排序 | |||
快速排序、归并排序 | |||
二分查找 | |||
二叉树算法 | |||
图的深度和广度优先搜索 | |||
DualPivotQuicksort | |||
回溯算法 | 一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解的话(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。 | ||
动态规划 |
面试实战题-数据结构与算法
最新推荐文章于 2024-08-12 11:59:56 发布