leetcode第84场双周赛

2023-10-27

一、6141. 合并相似的物品

1. 题目描述

在这里插入图片描述

2. 思路分析

解法:模拟
维护一个map<int, int> hashhash[i]表示价值为i 的物品的重量之和。由于map是有序的,直接把遍历map的结果作为答案即可。

3. 代码实现

class Solution {
public:
    vector<vector<int>> mergeSimilarItems(vector<vector<int>>& items1, vector<vector<int>>& items2) {
        map<int, int> hash;
        for (auto& p : items1) hash[p[0]] += p[1];
        for (auto& p : items2) hash[p[0]] += p[1];
        vector<vector<int>> res;
        for (auto& [k, v] : hash) 
            res.push_back({k, v});
    
        return res;
    }
};

二、6142. 统计坏数对的数目

1. 题目描述

在这里插入图片描述

2. 思路分析

解法:枚举
坏数对的数量=所有数对的数量-满足i < jj - i == nums[j] - nums[i]的数对数目。
把等式两边移项,变为nums[i] - i == nums[j] - j。因此只需要维护一个unordered_map<int, int> mp,mp[i]表示目前为止满足nums[i] - i == xi有几个。我们枚举j,并从答案中减去mp[nums[j] - j]的值即可。
时间复杂度为O(n)

3. 代码实现

typedef long long LL;

class Solution {
public:
    long long countBadPairs(vector<int>& nums) {
        int n = nums.size();
        LL ans = n * (n - 1ll) / 2;
        unordered_map<int, int> mp;
        for (int i = 0; i < n; i ++ ) {
            int t = nums[i] - i;
            ans -= mp[t];
            mp[t] ++;
        }
        return ans;
    }
};

三、6174. 任务调度器 II

1. 题目描述

在这里插入图片描述

2. 思路分析

解法:模拟
维护一个unordered_map<int, int> mp,mp[x]表示类型x的任务最近一次的结束时间。按顺序枚举所有任务,设当前任务类型为x,执行当前任务之前已经经过了t的时间,那么:

  1. t - mp[x] >= space,说明冷却时间已经结束,可以直接执行任务。t += ,并更新mp[x] = t.
  2. t - mp[x] < space,说明冷却时间还未结束。根据题意,此时最早能执行类型 x 任务的时间是 mp[x] + space + 1。因此,t = mp[x] + space + 1,并更新mp[x] = t

3. 代码实现

typedef long long LL;

class Solution {
public:
    long long taskSchedulerII(vector<int>& tasks, int space) {
        int n = tasks.size();
        unordered_map<int, LL> mp;
        for (int x : tasks) mp[x] = -1e8;
        LL ans = 0;
        for (int i = 0; i < n; i ++ ) {
            LL &last = mp[tasks[i]];
            if (ans - last >= space) ans ++, last = ans;
            else ans = last + space + 1, last = ans;
        }
        return ans;
    }
};

四、6144. 将数组排序的最少替换次数

1. 题目描述

在这里插入图片描述

2. 思路分析

解法:贪心
从倒数第二个数开始往前考虑。设当前考虑的数为x,它的后一个数为y

  1. x <= y,根据贪心,我们不应拆分x
  2. x > y,我们需要拆分 x 使得拆分后的最大值不超过 y,且根据贪心,拆分后的最小值要尽量大。根据数学知识,拆的次数越少,且拆得尽量平均才能让最小值尽量大。因此我们对 x 进行 (k - 1) 次拆分把它变成 kk 个数,其中的最小值就是 ⌊ x / k ⌋ \lfloor x/k \rfloor x/k

3. 代码实现

typedef long long LL;

class Solution {
public:
    long long minimumReplacement(vector<int>& nums) {
        int n = nums.size();
        LL res = 0;
        for (int i = n - 2, last = nums.back(); i >= 0; i -- ) {
            if (nums[i] < last) last = nums[i];
            else {
                int k = (nums[i] + last - 1) / last;
                res += k - 1;
                last = nums[i] / k;
            }
        }
        return res;
    }
};

关注博主不迷路,内容持续更新中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode第84场双周赛 的相关文章

随机推荐

  • 记录.原码、反码、补码是如何简化处理四则运算以及计算机的数值存储

    一 原码反码补码 1 原码 最高位是符号位 正数符号位为0 负数符号位为1 其余是数值 符号位加数值组成原码 2 反码 正数补码是原码 负数补码是除了符号位外其他位取反 3 补码 正数补码是原码 负数补码是其反码加1 二 问题 1 在学习v
  • SQLServer 2008 下载地址(微软官方网站)

    SQLServer 2008 下载地址 微软官方网站 中文版 3 28GB http sqlserver dlservice microsoft com dl download B 8 0 B808AF59 7619 4A71 A447 F
  • 2021年数模国赛B题--乙醇偶合制备 C4 烯烃

    一 题目 C4 烯烃广泛应用于化工产品及医药的生产 乙醇是生产制备 C4 烯烃的原料 在制备过程中 催化剂组合 即 Co 负载量 Co SiO2 和 HAP 装料比 乙醇浓度的组合 与温度对 C4 烯烃的选择性和 C4 烯烃收率将产生影响
  • 前端面试——实现数组的复制

  • 来了!Goby一年一度的红队专版正式发布!!

    某大型活动临近 盆圈开始热闹起来 各种抢人大赛以及群集结号声 Goby今年有什么动作呢 继续支持攻击队 红队 也称蓝军 为何有且仅有红队专版 如果对方是一位绝世武功高手且拥有绝世宝剑 你肯定没有信心与他一战 但如果给你配一把枪呢 哪怕是一把
  • 关于微信小程序复制到剪贴板显示默认提示词的问题

    早上一上班 看到一个需求 小程序实现点击复制到剪贴板 在开发文档找了 剪贴板 关键词 就直接找到了相关的接口 如图 心里很是欣慰 结果如下 提示词显示固定 不能修改任何东西 在社区里找了一下 得到的结果 暂未解决 针对这一问题 网上解决办法
  • flask的ORM操作

    flask的ORM操作 目录 flask的ORM操作 ORM Flask SQLAlchemy扩展 数据模型 模型之间的关联 表管理 操作数据 新增 修改 删除 事务 查询 Flask SQLAlchemy提供了分页方法 四 文件的迁移 f
  • Matlab 2014b m_map 工具箱的19种投影projection

    很久之前做过mmap的投影代码及图 不过当时自己水平也不行 无论是对图的理解还是对matlab的理解都不足 后来博客搬来搬去的 图也丢了 代码也挂了 正好最近又在用 所以重新做了一遍 投影主要分四类 1 Azimuthal projecti
  • mysql的timestamp会存在时区问题?

    简介 众所周知 mysql中有两个时间类型 timestamp与datetime 但当在网上搜索timestamp与datetime区别时 会发现网上有不少与时区有关的完全相反的结论 主要两种 timestamp没有时区问题 而dateti
  • Visual Studio 2019 community 安装教程及使用

    Visual Studio 2019 Community 详细安装教程及使用 步骤1 获取官方地址 https visualstudio microsoft com zh hans vs 步骤2 打开您刚才下载的文件 进行安装 最后会出现如
  • 动手学深度学习——数据操作之ndarray与tensor间的转换

    为什么可以转换 无论使用哪个深度学习框架 它的张量类 在MXNet中为ndarray 在PyTorch和TensorFlow中为tensor 都与Numpy的ndarray类似 但深度学习框架又比Numpy的ndarray多一些重要功能 首
  • arr访问绝对地址_西门子1200PLC与汇川伺服电机的MODBUS-RTU通讯

    一 硬件准备 以下以 CPU1215C DC DC DC和CM1241 RS485 模块为例 介绍S7 1200 Modbus RTU 主站通信控制汇川IS620P系列伺服驱动器的组态及编程步骤 二 伺服驱动器通信参数设置 功能码 名称 设
  • Qt扫盲-QMouseEvent 鼠标事件

    QMouseEvent 鼠标事件理论 一 概述 二 鼠标事件的传递 三 组合修饰符 四 鼠标坐标位置 五 使用方式 一 概述 当在QWidget窗口内的鼠标按钮被按下或释放 或者鼠标光标被移动时 就会发生鼠标事件 鼠标按下释放没有什么特殊的
  • R语言:利用leafletCN创建交互式地图

    R语言 利用leafletCN创建交互式地图 介绍 地图是一种强大的可视化工具 它可以帮助我们展示空间数据并揭示地理模式 R语言中的leafletCN包提供了创建交互式地图的功能 而且还支持中文地图的显示 本文将向您展示如何使用leafle
  • 百度地图点聚合-Javascript-复制可用

    百度地图点聚合 Javascript 复制可用 功能介绍 整体思路 遇到问题 具体实现 一 cdn引用 二 使用 三 自定义标记点图标 功能介绍 本文记录了百度地图BMap实现点聚合效果 如下图实例 地图缩小时聚合效果 地图放大后显示效果
  • 机器学习笔记——Neural Network

    神经网路算法Neural Network 神经网络包含输入层input layer 隐藏层hidden layer 输出层output layer三部分 多层神经网络中常用的优化参数算法 backpropagation 反向传播算法 多层神
  • 【开发工具】PyChram安装Python第三方库

    目录 一 进入控制台 二 安装第三方库 一 进入控制台 打开PyChram 设置 项目 Python解释器 查看解释器所在路径 根据路径打开解释器所在文件夹 在上方路径中输入cmd 回车 进入cmd控制台 二 安装第三方库 输入命令 这里使
  • 独家

    清华大数据 赛事经验分享 系列讲座是清华 青岛数据科学研究院继 应用 创新 和 技术 前沿 系列后推出的又一学术品牌 旨在分享国内外大数据领域重要赛事获胜团队及个人的参赛历程及其获胜经验 本期我们邀请到CIKM AnalytiCup2017
  • 【Qt串口调试助手】1.7 - QLabel标签插入链接,修改Qt应用图标

    QLabel标签添加超链接 点击 即可通过默认浏览器打开网页 GitHub源码 Qt串口调试助手下载 QLabel标签添加链接 Qt支持 HTML语音 所以可以对链接颜色 字体 有无下划线等进行设置 以下是使用 默认蓝色 无下划线的示例 状
  • leetcode第84场双周赛

    leetcode第84场双周赛 一 6141 合并相似的物品 1 题目描述 2 思路分析 3 代码实现 二 6142 统计坏数对的数目 1 题目描述 2 思路分析 3 代码实现 三 6174 任务调度器 II 1 题目描述 2 思路分析 3