当前位置: 首页 > article >正文

Leetcode 3080. Mark Elements on Array by Performing Queries

  • Leetcode 3080. Mark Elements on Array by Performing Queries
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3080. Mark Elements on Array by Performing Queries

1. 解题思路

这一题我们只需要按照题意进行一下实现就行了。具体来说的话,我们只需要依序遍历一下query,然后在每个query过程中判断一下目标元素之前是否有被mark过,并额外找出最小的 k i k_i ki个元素进行mark即可。

因此,我们要做的就是如何最优地完成这两个操作,前者我们用一个hash table来记录下所有被mark的位置,后者我们用一个有序数列来对其进行维护即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def unmarkedSumArray(self, nums: List[int], queries: List[List[int]]) -> List[int]:
        marked = set()
        q = sorted([(x, i) for i, x in enumerate(nums)])
        s = sum(nums)
        ans = []
        for idx, k in queries:
            if idx not in marked:
                s -= nums[idx]
                q.pop(bisect.bisect_left(q, (nums[idx], idx)))
                marked.add(idx)
            for x, i in q[:k]:
                s -= x
                marked.add(i)
            q = q[k:]
            ans.append(s)
        return ans

提交代码评测得到:耗时1076ms,占用内存50.3MB。


http://www.kler.cn/a/273143.html

相关文章:

  • Web开发(二)CSS3基础与进阶
  • JVM之垃圾回收器ZGC概述以及垃圾回收器总结的详细解析
  • 51_Lua面向对象编程
  • 机组存储系统
  • Python在Excel工作表中创建数据透视表
  • E10.【C语言】练习:编写一个猜数字游戏
  • 【SpringCloud】使用Seata实现分布式事务
  • 有关于Docker(容器),Image(镜像)部署等名词含义
  • 恒创科技:什么是BGP线路服务器?BGP机房的优点是什么?
  • vue中判断是否使用自定义插槽
  • 视频私有云,HDMI/AV多硬件设备终端接入,SFU/MCU视频会议交互方案。
  • 【NTN 卫星通信】 TN和多NTN配合的应用场景
  • Android FrameWork 学习路线
  • 行尾检测论文汇总
  • 挖到宝了!这些内容管理平台是企业的最佳选择
  • Kotlin进阶之协程从上车到起飞
  • “SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用教程
  • Algae c++
  • SSA优化最近邻分类预测(matlab代码)
  • 代码随想录刷题day27|组合总和II组合总和II分割回文串
  • 四.排序(冒泡/选择)
  • 【数据结构与算法】:非递归实现快速排序、归并排序
  • 从0到1理解MySQL的事务和ACID特性
  • java方法的引用传递和值传递
  • 【力扣精选算法100道】——带你了解(数组模拟栈)算法
  • Java学习笔记(十八)综合练习,Properties配置文件