堆
前行follow
learning sharing and discussing.
展开
-
题目地址(1642. 可以到达的最远建筑)
给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。你从建筑物 0 开始旅程,不断向后面的建筑物移动,期间可能会用到砖块或梯子。当从建筑物 i 移动到建筑物 i+1(下标 从 0 开始 )时:如果当前建筑物的高度 大于或等于 下一建筑物的高度,则不需要梯子或砖块如果当前建筑的高度 小于 下一个建筑的高度,您可以使用 一架梯子 或 (h[i+1] - h[i]) 个砖块如果以最佳方式使用给定的梯子和砖块,返回你可以到达的最远建筑物的下标(原创 2022-08-15 11:29:29 · 112 阅读 · 0 评论 -
题目地址(1488. 避免洪水泛滥)
你的国家有无数个湖泊,所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的,那么它就会装满水。如果第 n 个湖泊下雨前是 满的 ,这个湖泊会发生 洪水 。你的目标是避免任意一个湖泊发生洪水。...原创 2022-08-13 12:05:53 · 123 阅读 · 0 评论 -
【刷题小结】多路归并类型
多路归并方法原创 2022-08-13 11:07:39 · 100 阅读 · 0 评论 -
题目地址(857. 雇佣 K 名工人的最低成本)
有 n 名工人。 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。现在我们想雇佣 k 名工人组成一个工资组。在雇佣 一组 k 名工人时,我们必须按照下述规则向他们支付工资:对工资组中的每名工人,应当按其工作质量与同组其他工人的工作质量的比例来支付工资。工资组中的每名工人至少应当得到他们的最低期望工资。给定整数 k ,返回 组成满足上述条件的付费群体所需的最小金额 。在实际答案的 10-5 以内的答案将被原创 2022-08-10 15:12:11 · 153 阅读 · 0 评论 -
题目地址(295. 数据流的中位数)
中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。原创 2022-08-10 11:05:52 · 63 阅读 · 0 评论 -
题目地址(215. 数组中的第K个最大元素)
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。原创 2022-07-27 09:17:33 · 142 阅读 · 0 评论 -
题目地址(295. 数据流的中位数)
题目地址(295. 数据流的中位数)题目描述中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:addNum(1)addNum(2)findMedian() -&原创 2022-03-21 10:50:23 · 59 阅读 · 0 评论 -
构建堆并实现堆排
构建堆并实现堆排# 构造堆类import randomclass Heap(): def __init__(self,length): self.heap = [0] * (length+1) self.size = 0 def push(self,val): if self.size == len(self.heap)-1: return False self.size += 1原创 2022-03-19 20:14:16 · 74 阅读 · 0 评论 -
题目地址(1206. 设计跳表)
题目地址(1206. 设计跳表)题目描述不使用任何库函数,设计一个 跳表 。跳表 是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。例如,一个跳表包含 [30, 40, 50, 60, 70, 90] ,然后增加 80、45 到跳表中,以下图的方式操作:Artyom Kalinin [CC BY-SA 3.0], via Wikimedia Commons跳表中有很多层,每一原创 2022-03-19 19:13:43 · 489 阅读 · 0 评论 -
题目地址(1046. 最后一块石头的重量)
题目地址(1046. 最后一块石头的重量)题目描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。 示例:输入:[2,7,4,1,8,原创 2022-03-19 17:21:55 · 81 阅读 · 0 评论 -
题目地址(787. K 站中转内最便宜的航班)
题目地址(787. K 站中转内最便宜的航班)题目描述有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei 抵达 toi。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。 示例 1:原创 2022-03-18 14:35:09 · 150 阅读 · 0 评论 -
题目地址(743. 网络延迟时间)
题目地址(743. 网络延迟时间)题目描述有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。 示例 1:输入:times = [[2,1,1],[2,3,1],[3,4,1]], n =原创 2022-03-17 11:06:55 · 667 阅读 · 0 评论 -
题目地址(973. 最接近原点的 K 个点)
题目地址(973. 最接近原点的 K 个点)题目描述给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,并且是一个整数 k ,返回离原点 (0,0) 最近的 k 个点。这里,平面上两点之间的距离是 欧几里德距离( √(x1 - x2)2 + (y1 - y2)2 )。你可以按 任何顺序 返回答案。除了点坐标的顺序之外,答案 确保 是 唯一 的。 示例 1:输入:points = [[1,3],[-2,2]], k = 1输出:原创 2022-03-16 11:01:13 · 125 阅读 · 0 评论 -
题目地址(17.14. 最小K个数)
题目地址(17.14. 最小K个数)题目描述设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))前置知识公司暂无思路关键点代码语言支持:Python3Python3 Code:class So原创 2022-03-16 10:47:45 · 443 阅读 · 0 评论 -
题目地址(1642. 可以到达的最远建筑)
题目地址(1642. 可以到达的最远建筑)题目描述给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。你从建筑物 0 开始旅程,不断向后面的建筑物移动,期间可能会用到砖块或梯子。当从建筑物 i 移动到建筑物 i+1(下标 从 0 开始 )时:如果当前建筑物的高度 大于或等于 下一建筑物的高度,则不需要梯子或砖块如果当前建筑的高度 小于 下一个建筑的高度,您可以使用 一架梯子 或 (h[i+1] - h[i]) 个砖块如果以最佳方式使原创 2022-03-16 10:30:14 · 123 阅读 · 0 评论 -
题目地址(871. 最低加油次数)
题目地址(871. 最低加油次数)题目描述汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。为了到达目的地,汽车所必要的最低加油次数原创 2022-03-15 10:46:15 · 87 阅读 · 0 评论 -
题目地址(1675. 数组的最小偏移量)
题目地址(1675. 数组的最小偏移量)题目描述给你一个由 n 个正整数组成的数组 nums 。你可以对数组的任意元素执行任意次数的两类操作:如果元素是 偶数 ,除以 2例如,如果数组是 [1,2,3,4] ,那么你可以对最后一个元素执行此操作,使其变成 [1,2,3,2]如果元素是 奇数 ,乘上 2例如,如果数组是 [1,2,3,4] ,那么你可以对第一个元素执行此操作,使其变成 [2,2,3,4]数组的 偏移量 是数组中任意两个元素之间的 最大差值 。返回数组在执行某些操作之后原创 2022-03-15 10:05:55 · 313 阅读 · 0 评论 -
题目地址(632. 最小区间)
题目地址(632. 最小区间)题目描述你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。 示例 1:输入:nums = [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]输出:[20,24]解释: 列表 1:[4, 10, 15, 24, 26],24原创 2022-03-13 15:04:35 · 745 阅读 · 0 评论 -
1439. 有序矩阵中的第 k 个最小数组和
题目地址(1439. 有序矩阵中的第 k 个最小数组和)题目描述给你一个 m * n 的矩阵 mat,以及一个整数 k ,矩阵中的每一行都以非递减的顺序排列。你可以从每一行中选出 1 个元素形成一个数组。返回所有可能数组中的第 k 个 最小 数组和。 示例 1:输入:mat = [[1,3,11],[2,4,6]], k = 5输出:7解释:从每一行中选出一个元素,前 k 个和最小的数组分别是:[1,2], [1,4], [3,2], [3,4], [1,6]。其中第 5 个的和是原创 2022-03-13 11:01:18 · 1540 阅读 · 0 评论 -
题目地址(857. 雇佣 K 名工人的最低成本)
题目地址(857. 雇佣 K 名工人的最低成本)题目描述有 n 名工人。 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。现在我们想雇佣 k 名工人组成一个工资组。在雇佣 一组 k 名工人时,我们必须按照下述规则向他们支付工资:对工资组中的每名工人,应当按其工作质量与同组其他工人的工作质量的比例来支付工资。工资组中的每名工人至少应当得到他们的最低期望工资。给定整数 k ,返回 组成满足上述条件的付费原创 2022-03-13 10:25:31 · 271 阅读 · 0 评论