- [Leetcode 3781. Maximum Score After Binary Swaps](#Leetcode 3781. Maximum Score After Binary Swaps)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题是Leetcode双周赛172的第三题,是一道medium难度的题目。
这一题的思路就是一个有序栈的思路,对于任意一个 1 1 1出现的位置,他能取到的最大值就是其前方所有出现过的元素的最大值,因此,我们只需要维持一个有序数组,其元素为前序所有元素的值,然后每次遇到一个 1 1 1的位置,就弹出当前数组中最大的值即可。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def maximumScore(self, nums: List[int], s: str) -> int:
cache = []
ans = 0
for num, ch in zip(nums, s):
bisect.insort(cache, num)
if ch == "1":
ans += cache[-1]
cache.pop()
return ans
提交代码评测得到:耗时1575ms,占用内存33.30MB。