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;
}
相关推荐
XW0105999几秒前
4-11判断素数
前端·python·算法·素数
J2虾虾2 分钟前
Spring Boot中使用@Scheduled做定时任务
java·前端·spring boot
浅念-20 分钟前
C++ 继承
开发语言·c++·经验分享·笔记·学习·算法·继承
算法备案代理25 分钟前
深度合成算法备案:生成式AI需要备案吗?
人工智能·算法·算法备案
菜鸡儿齐25 分钟前
leetcode-全排列
算法·leetcode·深度优先
Wect28 分钟前
LeetCode 102. 二叉树的层序遍历:图文拆解+代码详解
前端·算法·typescript
不想看见40433 分钟前
Maximal Square 基本动态规划:二维--力扣101算法题解笔记
算法·leetcode·动态规划
肉肉不想干后端34 分钟前
联合订单并发退款:一次分布式锁冲突的排查与思考
java
Hag_2034 分钟前
LeetCode Hot100 53.最大子数组和
数据结构·算法·leetcode
王老师青少年编程38 分钟前
csp信奥赛C++之反素数
数据结构·c++·数学·算法·csp·信奥赛·反素数