上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页
摘要: 1. 堆 一、堆的引入 现在我们想专门设计一种数据结构,用来存放整数,要求提供3个接口: 添加元素 获取最大值(或最小值) 删除最大值(或最小值) 有一种最优的数据结构就是堆。 时间复杂度:获取最大值的:O(1)、删除最大值O(log n)、添加元素O(log n) 二、堆的相关概念 堆(Heap是 阅读全文
posted @ 2023-12-17 17:36 Ac_c0mpany丶 阅读(70) 评论(0) 推荐(0)
摘要: 题目描述 思路:大顶堆+翻转 注意:该题有问题,代码可以通过测试用例。 方法一: class Solution { public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) { PriorityQueue<N 阅读全文
posted @ 2023-12-17 17:10 Ac_c0mpany丶 阅读(38) 评论(0) 推荐(0)
摘要: 题目描述 思路 注意是前K个高频单词,就是TopK问题,只能用小根堆找最大的K个元素啊,用大根堆找的就是最小的K个元素了 思路一: class Solution { public List<String> topKFrequent(String[] words, int k) { Map<Strin 阅读全文
posted @ 2023-12-17 11:04 Ac_c0mpany丶 阅读(22) 评论(0) 推荐(0)
摘要: 题目描述 思路:Top-K问题 + 大顶堆 使用大顶堆求第K小的元素。 方法一: class Solution { public int kthSmallest(int[][] matrix, int k) { // 1. 使用大顶堆 PriorityQueue<Integer> heap = ne 阅读全文
posted @ 2023-12-17 11:04 Ac_c0mpany丶 阅读(34) 评论(0) 推荐(0)
摘要: 题目描述 思路:使用大顶堆 方法一: class Solution { public String frequencySort(String s) { // 1. HashMap统计词频 Map<Character, Integer> map = new HashMap<>(); for (char 阅读全文
posted @ 2023-12-16 21:03 Ac_c0mpany丶 阅读(21) 评论(0) 推荐(0)
摘要: 题目描述 思路:最小堆 好好领悟这个代码: // 将nums数组所有元素插入小根堆中 for (int num : nums) { heap.offer(num); // 当小根堆的容量大于k时,就删除堆顶元素 if (heap.size() > k) heap.poll(); } 当heap.si 阅读全文
posted @ 2023-12-15 17:24 Ac_c0mpany丶 阅读(22) 评论(0) 推荐(0)
摘要: 链表的算法题中很常见的技巧: 添加虚拟头结点,即dummy结点。当需要创造一条新链表的时候,可以使用虚拟头节点简化边界情况的处理。 例如:LeetCode21. 合并两个有序链表,让两条有序链表合并成一条新的有序链表,需要创造一条新的链表。 例如,LeetCode86. 分隔链表,把一条链表分解成两 阅读全文
posted @ 2023-12-13 09:28 Ac_c0mpany丶 阅读(17) 评论(0) 推荐(0)
摘要: 题目描述 思路:同LeetCode25. K个一组翻转链表 因为涉及到可能链表的头节点会改变,所以设置dummy节点 先走left - 1步到达left的左边一个节点 查看后面是否存在right - left + 1个节点 先翻转内部节点指向right - left次 再翻转外部节点 方法一: /* 阅读全文
posted @ 2023-12-13 09:22 Ac_c0mpany丶 阅读(15) 评论(0) 推荐(0)
摘要: 题目描述 思路: 判断链表中是否足够k个元素 再将这k个元素内部翻转一下 将前后端点连接的指针变化一下 方法一: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next 阅读全文
posted @ 2023-12-11 21:07 Ac_c0mpany丶 阅读(17) 评论(0) 推荐(0)
摘要: 题目描述 思路一:添加"小弟" 根据遍历到的原节点创建对应的新节点,每个新创建的节点是在原节点后面。 原节点i的随机指针(如果有的话),指向的是原节点j,那么新节点i的随机指针,指向的是原节点j的next 最后将两个链表分开,再返回新链表就可以 思路二:使用哈希表 首先创建一个哈希表,再遍历原链表, 阅读全文
posted @ 2023-12-11 21:05 Ac_c0mpany丶 阅读(42) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页