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;
}
相关推荐
Liangwei Lin几秒前
洛谷 P1955 [NOI2015] 程序自动分析
算法
zwjapple21 分钟前
全栈开发面试高频算法题
算法·面试·职场和发展
北漂IT民工_程序员_ZG22 分钟前
SpringBean生命周期,动态代理
java·spring boot·spring
不穿格子的程序员23 分钟前
从零开始写算法——链表篇5:K个一组翻转链表 + 排序链表
算法·链表·分治
青鸟21824 分钟前
从资深开发到脱产管理的心态转变
后端·算法·程序员
晨曦夜月33 分钟前
笔试强训day7
开发语言·c++·算法
Kurbaneli35 分钟前
先啃C语言还是直奔目标?
开发语言
iAkuya39 分钟前
(leetcode)力扣100 14合并区间(差分/排序)
算法·leetcode·职场和发展
老华带你飞44 分钟前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
木心爱编程1 小时前
【Qt 5.14.2 新手实战】QTC++入门筑基——按钮与标签联动:QPushButton + QLabel 实现图片切换器
java·c++·qt