60 贪心算法解优势洗牌-田忌赛马问题

问题描述:给定两个大小相等的数组A和B,A相对于B的优势是A[i]>B[i]的缩影数目来确定,返回A的序列,使得其相对于B的优势最大化。

贪心算法求解:如果当前田即最快的马没有其最快的马快,那就用田最慢的马与其赛马,如果比他快,就用最快的马进行比赛,因为需要和齐王最快的马进行比较,从而使用最大堆进行进行装齐王的马,每次弹出一个和田ji的马进行对比,且在最大堆中需要存放马的位置,从而可根据位置进行结果的更新。

java 复制代码
public int[] saima(int []A,int []B)
{
int left=0;
int right=A.length-1;
Arrays.sort(A);
int []res=new int[A.length];
PriorityQueue<int[]>maxheap=new PriorityQueue<>((a,b)->b[0]-a[0]);
for(int i=0;i<B.length;i++)
{
int []temp=maxheap.poll();
if(temp[0]>A[A.length-1])
{
res[temp[1]]=left;
left++;
}else
{
res[temp[1]]=right;
right--;
}
}
return res;
}
相关推荐
沫璃染墨几秒前
二叉搜索树完全指南:从核心原理到增删查改全实现
开发语言·c++
shehuiyuelaiyuehao2 分钟前
关于进程和线程的关系
java·开发语言
‎ദ്ദിᵔ.˛.ᵔ₎10 分钟前
C++哈希表
数据结构·c++·散列表
河阿里11 分钟前
SpringBoot:项目启动速度深度优化
java·spring boot·后端
AaronCos12 分钟前
弄懂java泛型中的extends和super
java·开发语言
用户2395261801013 分钟前
别再 new 满天飞了!一文搞懂工厂模式,程序员终于不用手搓对象了 😆
java
毋语天14 分钟前
Python 模块、包与异常处理:构建更稳健的程序
开发语言·python
阿丰资源18 分钟前
基于SpringBoot的企业客户管理系统(附源码)
java·spring boot·后端
yongui4783422 分钟前
基于 GA 优化的 BP 神经网络算法分析与 MATLAB 实现
神经网络·算法·matlab
IT观察者25 分钟前
Qt单例的优雅实现
开发语言·qt