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。

相关推荐
季明洵6 天前
Java实现循环队列、栈实现队列、队列实现栈
java·数据结构·算法··队列
ValhallaCoder7 天前
hot100-栈
数据结构·python·算法·
识君啊8 天前
Java 栈 - 附LeetCode 经典题解
java·数据结构·leetcode·deque··stack·lifo
季明洵8 天前
Java实现栈和最小栈
java·开发语言·数据结构·
老鼠只爱大米13 天前
LeetCode经典算法面试题 #20:有效的括号(数组模拟法、递归消除法等五种实现方案详细解析)
算法·leetcode··括号匹配·数组模拟法·递归消除法
shentuyu木木木(森)14 天前
栈与队列基础
c++··队列
尘沐羽16 天前
0基础学嵌入式--全网最详细Linux开发指南:一篇文章带你学懂Linux线程
java·linux·数据结构·数据库·
码农幻想梦20 天前
SJUKY111 计算表达式
元亓亓亓23 天前
考研408--数据结构--day5--栈与队列的应用
数据结构·考研··408·队列
闻缺陷则喜何志丹1 个月前
【栈 递归】P8650 [蓝桥杯 2017 省 A] 正则问题|普及+
c++·数学·蓝桥杯·递归·