五月刷题21——堆
今日刷题内容: 堆
前言
- 一个算法废材的刷题之路开更了, 更新每天刷题的题解内容
- 注重个人理解,看难度更新题目数量
- 题目来源于力扣
- 新开专栏,争取每日都能做出至少一题=v=
- 语言java、python、c\c++
一、今日题目
二、解题思路
今天的题目只会做一题,太绝望了
1. 2099. 找到和最大的长度为 K 的子序列
- 使用一个辅助数组来记录每个元素的下标值
- 首先通过元素的值来降序排序
- 得到前
k
个元素,再通过下标来升序排序- 返回结果前
k
个元素即可
class Solution:
def maxSubsequence(self, nums: List[int], k: int) -> List[int]:
n = len(nums)
temp = [[i, nums[i]] for i in range(n)]
# 按照元素降序排序
temp.sort(key = lambda x: x[1], reverse = True)
temp = sorted(temp[:k]) # 取前k个,并按元素下标排序
ret = [temp[i][1] for i in range(k)] # 返回目标数组
return ret
2. 1792. 最大平均通过率
还不会做
3. 1499. 满足不等式的最大值
还不会做
4. 2163. 删除元素后和的最小差值
还不会做