贪心算法(6)(java)优势洗牌

题目: 给定两个长度相等的数组nums1和nums2,nums1相对于nums2的优势可以满足nums1【1】>nums[2]的索引的数目来描述。

返回nums1的任意排列,使其相对于nums2的透视最大化呀。

原理(贪心策略):田忌赛马

1.如果比不过,就去拖累到对main最强的哪一个;

2.如果能比过,那就直接比;

java 复制代码
import java.util.Arrays;
import java.util.Comparator;

public class Solution {
    public  int[] advantageCount(int[]nums1,int[]nums2){
        int n= nums1.length;
        Arrays.sort(nums1);
     Integer[] index2=new Integer[n];
        for(int i=0;i<n;i++)index2[i]=i;//存储结果
        Arrays.sort(index2, Comparator.comparingInt(i -> nums2[i]));
        //田忌赛马
        int[]ret=new int[n];
        int left =0,right=n-1;//双指针,用left指向最小元素,用right指向最大元素
        //用田忌赛马的策略分配元素
        for(int x:nums1)
        {
            if(x>nums2[index2[left]])
            {
                ret[index2[left++]]=x;
            }
            else {
                ret[index2[right--]]=x;
            }
        }
        return  ret;
    }

    public static void main(String[] args) {
        Solution solution=new Solution();
        int[] nums1={2,7,11,15},nums2={1,10,4,11};

        System.out.println(Arrays.toString (solution.advantageCount(nums1,nums2)));

    }
}
相关推荐
paopaokaka_luck2 小时前
婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
vue.js·spring boot·后端·websocket·算法·echarts
愚戏师3 小时前
机器学习(重学版)基础篇(算法与模型一)
人工智能·算法·机器学习
OEC小胖胖5 小时前
渲染篇(二):解密Diff算法:如何用“最少的操作”更新UI
前端·算法·ui·状态模式·web
找不到、了5 小时前
Java排序算法之<归并排序>
算法·排序算法
香蕉可乐荷包蛋5 小时前
排序算法 (Sorting Algorithms)-Python示例
python·算法·排序算法
Sylvia-girl5 小时前
排序查找算法,Map集合,集合的嵌套,Collections工具类
java·算法·排序算法
TT哇5 小时前
【分治】归并排序——排序数组(medium)
java·算法·排序算法
skyang.5 小时前
LeetCode 85. 最大矩形
算法·leetcode·职场和发展
滋滋不吱吱6 小时前
枚举中间位置基础篇
考研·算法·leetcode
阳光不锈@6 小时前
算法:最长递增子序列解法记录
算法·最长递增子序列·超详细分析·java实现