2022-5-1 双指针

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

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

 

复制代码
 1 class Solution {
 2     public int[] advantageCount(int[] nums1, int[] nums2) {
 3         // 11 13 25 32
 4         // 8 12 24 32
 5         // 8 32 24 
 6         Arrays.sort(nums1);
 7         int n=nums1.length;
 8         PriorityQueue<Pair> queue=new PriorityQueue<>((a,b)->(b.num-a.num));
 9         for (int i=0;i<n;i++){
10             queue.offer(new Pair(nums2[i],i));
11         }
12         
13         int[] ans=new int[n];
14         int l=0,r=n-1;
15         while (!queue.isEmpty()){
16             Pair pair=queue.poll();
17             int i=pair.index,temp=pair.num;
18             if (nums1[r]<=temp) {
19                 ans[i]=nums1[l];
20                 l++;
21             }else {
22                 ans[i]=nums1[r];
23                 r--;
24             }
25         }
26         return ans; 
27     }
28 
29     class Pair{
30         int num;
31         int index;
32         Pair(int num,int index){
33             this.num=num;
34             this.index=index;
35         }
36     }
37 }
复制代码

思路:对于一个数字,如果没有比他大的直接用最小的田忌赛马。证明过程略。 为了记住排序后的,需要一个pair数据来排序和原先的索引。

posted on   阿ming  阅读(29)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示