Leetcode 3781. Maximum Score After Binary Swaps

  • [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。

相关推荐
Fcy6489 小时前
算法竞赛有关数据结构的补充(2)--- 栈、队列的静态实现和树的实现
数据结构···队列
阿里嘎多哈基米5 天前
速通Hot100-Day07——栈
数据结构·算法·leetcode··队列·hot100
Laurence8 天前
C++ 对象和嵌套对象的创建与销毁
c++···对象·创建·销毁·嵌套对象
im_AMBER9 天前
Leetcode 136 最小栈 | 逆波兰表达式求值
数据结构·学习·算法·leetcode·
识君啊9 天前
Java字符串算法核心攻略
java·数据结构·算法·leetcode·字符串·
季明洵1 个月前
Java实现循环队列、栈实现队列、队列实现栈
java·数据结构·算法··队列
ValhallaCoder1 个月前
hot100-栈
数据结构·python·算法·
识君啊1 个月前
Java 栈 - 附LeetCode 经典题解
java·数据结构·leetcode·deque··stack·lifo
季明洵1 个月前
Java实现栈和最小栈
java·开发语言·数据结构·
老鼠只爱大米1 个月前
LeetCode经典算法面试题 #20:有效的括号(数组模拟法、递归消除法等五种实现方案详细解析)
算法·leetcode··括号匹配·数组模拟法·递归消除法