1. 解题思路
这一题是leetcode双周赛171的第三题,同样是一个medium的题目。
这一题乍一眼看过去像是一个动态规划的题目,实际其实我们只需要考察tech1与tech2的差值,然后取最大的 k k k个强制分配给tech1,其余的谁大取谁即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def maxPoints(self, technique1: List[int], technique2: List[int], k: int) -> int:
s = [(x-y, x, y) for x, y in zip(technique1, technique2)]
s = sorted(s, reverse=True)
n, ans = len(s), 0
for i in range(n):
if i < k:
ans += s[i][1]
elif s[i][0] >= 0:
ans += s[i][1]
else:
ans += s[i][2]
return ans
提交代码评测得到:耗时275ms,占用内存40.16MB。
1万+

被折叠的 条评论
为什么被折叠?



