2022-5-1 双指针
给定两个大小相等的数组 nums1
和 nums2
,nums1
相对于 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数据来排序和原先的索引。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了