每日OJ题_贪心算法二⑤_力扣870. 优势洗牌(田忌赛马)

目录

力扣870. 优势洗牌(田忌赛马)

解析代码


力扣870. 优势洗牌(田忌赛马)

870. 优势洗牌

 难度 中等

给定两个长度相等的数组 nums1 和 nums2nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。

返回 nums1 的任意排列,使其相对于 nums2 的优势最大化。

示例 1:

输入:nums1 = [2,7,11,15], nums2 = [1,10,4,11]
输出:[2,11,7,15]

示例 2:

输入:nums1 = [12,24,8,32], nums2 = [13,25,32,11]
输出:[24,32,8,12]

提示:

  • 1 <= nums1.length <= 10^5
  • nums2.length == nums1.length
  • 0 <= nums1[i], nums2[i] <= 10^9
class Solution {
public:
    vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {

    }
};

解析代码

这里讲一下田忌赛马背后的博弈决策,从三匹马拓展到 n 匹马之间博弈的最优策略。

  • 田忌:下等马 中等马 上等马
  • 齐王:下等马 中等马 上等马
  1. 田忌的下等马 pk 不过齐王的下等马,因此把这匹马丢去消耗一个齐王的最强的马。
  2. 接下来选择中等马 pk 齐王的下等马,勉强获胜。
  3. 最后用上等马 pk 齐王的中等马,勉强获胜。

由此可以得出一个最优的决策方式:

  • 当我方此时最差的比不过对面最差的时候,让我方最差的去处理掉对面最好的(反正要输,不如去拖掉对面一个最强的)。
  • 当我方此时最差的能比得上对面最差的时候,就让两者比对下去(最差的都能获胜,就不需要更强的比了)。
class Solution {
public:
    vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {
        int sz = nums1.size();
        sort(nums1.begin(), nums1.end());
        vector<int> index(sz), ret(sz); // index和nums2下标绑定
        for(int i = 0; i < sz; ++i)
        {
            index[i] = i;
        }
        sort(index.begin(), index.end(),[&](int index1, int index2)
        {
            return nums2[index1] < nums2[index2];
        });

        int left = 0, right = sz - 1;
        for(auto& e : nums1)
        {
            if(e <= nums2[index[left]]) // 最弱的和最弱的判断
                ret[index[right--]] = e; // 比不过就去和最强的比,相等也比不过
            else // 比过了,放到最弱的位置
                ret[index[left++]] = e;
        }
        return ret;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/591334.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EDA(一)Verilog

EDA&#xff08;一&#xff09;Verilog Verilog是一种用于电子系统设计自动化&#xff08;EDA&#xff09;的硬件描述语言&#xff08;HDL&#xff09;&#xff0c;主要用于设计和模拟电子系统&#xff0c;特别是在集成电路&#xff08;IC&#xff09;和印刷电路板&#xff08;…

使用OpenCV绘制两幅图验证DSC和IoU以及BCELoss的计算程序

1.创作灵感 很多小伙伴在玩深度学习模型的时候,需要计算Groudtruth和predict图的dsc、IOU以及BCELoss。这两个关键的指标的程序有很多种写法,今天使用OpenCV绘制两张已知分布的图像,计算其dsc、IOU以及BCELoss。 2、图像如图所示 在一个100100的区域内,红色框范围为预测…

访问jwt生成token404解决方法

背景&#xff1a; 1.在部署新的阿里云环境后发现调用jwt生成token的方法404&#xff0c;前端除了404&#xff0c;台不报任何错误 在本地好用&#xff0c;在老的阿里云环境好用&#xff0c; 2.缩短生成私钥的参数报错&#xff0c;以为私钥太长改了tomcat参数也无效&#xff0…

启动任何类型操作系统:不需要检索 ISO 文件 | 开源日报 No.243

netbootxyz/netboot.xyz Stars: 7.7k License: Apache-2.0 netboot.xyz 是一个方便的平台&#xff0c;可以不需要检索 ISO 文件就能启动任何类型操作系统或实用工具磁盘。它使用 iPXE 提供用户友好的 BIOS 菜单&#xff0c;让您轻松选择所需的操作系统以及特定版本或可引导标志…

华为云耀云服务器开放端口

博客主页&#xff1a;花果山~程序猿-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一.华为云控制台开放端口 寻找到安全组信息 2. 添加开放的端口信息 3. 检查是否成…

【C++】对文章分词,并对词频用不同排序方法排序,比较各排序算法效率(功能全面,通俗易懂)

文章分词 1&#xff0e;问题描述2&#xff0e;需求分析3&#xff0e;概要设计3.1 主程序流程3.2 函数调用关系 4&#xff0e;主函数实现4.1 main.h4.2 main.cpp 5. 函数实现5.1 processDic函数5.2 forwardMax函数5.3 countWordFreq函数5.4 quickResult函数5.5 其它排序算法效率…

计算机视觉科普到实践

第一部分&#xff1a;计算机视觉基础 引言&#xff1a; 计算机视觉作为人工智能领域的一个重要分支&#xff0c;近年来取得了显著的进展。本文将带领读者深入了解计算机视觉的基础知识&#xff0c;并通过实践案例展示其应用。让我们一同探索这个令人着迷的领域吧&#xff01;…

SpringSecurity6 学习

学习介绍 网上关于SpringSecurity的教程大部分都停留在6以前的版本 但是&#xff0c;SpringSecurity6.x版本后的内容进行大量的整改&#xff0c;网上的教程已经不能够满足 最新的版本使用。这里我查看了很多教程 发现一个宝藏课程&#xff0c;并且博主也出了一个关于SpringSec…

解锁AI新纪元:如何用好大语言模型?

在20世纪末和21世纪初&#xff0c;⼈类经历了两次信息⾰命的浪潮&#xff1a; 第⼀次是互联网时代的兴起&#xff0c;将世界各地连接在⼀起&#xff0c;改变了⼈们获取信息和交流的⽅式。 第⼆次则是移动互联网时代的到来&#xff0c;智能⼿机和移动应⽤程序的普及使⼈们可以…

Oracle 数据库全面升级为 23ai

从 11g 到 12c 再到 19c&#xff0c;今天&#xff0c;我们迎来了 23ai &#xff01; “ Oracle AI Vector Search allows documents, images, and relational data that are stored in mission-critical databases to be easily searched based on their conceptual content Ge…

平平科技工作室-Python-猜数字游戏

一.代码展示 import random print(__猜数字游戏__) print(由平平科技工作室制作) print(游戏规则:1至10随机数随便猜) print (三次没猜对游戏结束) numrandom.randint (1,10) for i in range(3):aint(input(输入你想要猜测的数字))if a>num:print (数字猜的有点大了)elif a…

MySQL-数据缓冲池(Buffer Pool)

InnoDB存储引擎以 页 为单位管理存储空间&#xff0c;增删改查的本质就是访问页面。为提高查询效率&#xff0c;DBMS会占用内存作为缓冲池&#xff0c;在执行SQL之前&#xff0c;会将磁盘上的页 缓存到内存中的 缓冲池&#xff08;Buffer Pool&#xff09;后执行相关SQL语句。 …

git学习指南

文章目录 一.版本控制1.认识版本控制2.版本控制功能3.集中式版本控制4.分布式版本控制 二.Git的环境安装搭建1.Git的安装2.Git配置分类3.Git配置选项 三.Git初始化本地仓库1. git init/git clone-获取Git仓库2. 本地仓库文件的划分3. git status-检测文件的状态4. git add-文件…

数据库基础--MySQL多表查询之外键约束

MySQL多表关系 一对一 顾名思义即一个对应一个的关系&#xff0c;例如身份证号对于每个人来说都是唯一的&#xff0c;即个人信息表与身份证号信息表是一对一的关系。车辆信息表与车牌信息表也是属于一对一的关系。 一对多 即一个表当中的一个字段信息&#xff0c;对应另一张…

黑马面试篇1

目录 一、面试准备 二、Redis篇 ​编辑1. 布隆过滤器&#xff1a; 2. 缓存击穿概念&解决方案 3. 双写一致 4. 持久化 1&#xff09;RDB的执行原理&#xff1f; 2&#xff09;AOF vs RDB 5. 数据过期策略 6. 数据淘汰策略 7. 分布式锁 8. Redis集群 1&#xff…

如何选择一个出色的APP内测分发平台 - 探讨小猪APP分发平台

在众多APP内测分发平台中如何选择一个出色的APP内测分发平台 - 探讨小猪APP分发平台&#xff0c;小猪APP分发平台&#xff08;zixun.ppzhu.net&#xff09;以其出色的服务和高效的推广机制成为行业佼佼者。 小猪APP分发平台的核心优势 小猪APP分发平台不仅以其用户友好的界面赢…

Coze扣子开发指南:搭建一个免费的微信公众号AI客服

运营微信公众号的自媒体&#xff0c;现在借助Coze扣子可以非常好用而且免费的7*24客服了&#xff0c;完全不需要任何编程基础&#xff0c;操作非常简单&#xff1a; 打开Coze扣子&#xff0c;新建一个bot&#xff0c;输入bot名称、功能介绍和图标&#xff1a; 选择大语言模型&…

论文笔记(四十五)Attention Is All You Need

Attention Is All You Need 文章概括摘要1. 介绍2. 背景3. 模型架构3.1 编码器和解码器堆栈3.2 Attention3.2.1 按比例点积Attention3.2.2 Multi-Head Attention3.2.3 注意力在模型中的应用 3.3 定位前馈网络3.4 嵌入与 Softmax3.5 位置编码 4 为什么 Self-Attention5. Trainin…

OpenWRT部署Zerotier虚拟局域网实现内网穿透

前言 细心的小伙伴肯定已经发现了&#xff1a;电脑上部署了Zerotier&#xff0c;如果路由器也部署了OpenWRT&#xff0c;那是否能远程访问呢&#xff1f; 答案是肯定的。 OpenWRT部署Zerotier有啥好处&#xff1f; 那好处必须多&#xff0c;其中的一个便是在外远程控制家里…

Win11安装Postgresql(更新于24.5)

Postgresql是一个功能强大的开源对象关系数据库系统&#xff0c;拥有超过 35 年的积极开发经验&#xff0c;这为其在可靠性、功能稳健性和性能方面赢得了良好的声誉。 1.安装程序下载 根据系统版本型号选择对应安装程序完成下载 网址&#xff1a; https://www.enterprisedb…