/** 373. Find K Pairs with smallest Sums * 2016-7-16 by Mingyang * Heap to do, remember queue<int[]> is not queue<integer[]> because arr Ay is not primitive variable * Another point is k in case of a large and not, larger than the size of the heap can only output so much * judge empty, do not think too much, what side for the empty side is not empty*/ Public Staticlist<int[]> Ksmallestpairs (int[] nums1,int[] Nums2,intk) {intlen1=nums1.length; intLen2=nums2.length; List<int[]> res=Newarraylist<int[]>(); if(Len1 = = 0 | | len2 = = 0 | | k = = 0) { returnRes; } Queue<int[]> queue =Newpriorityqueue<int[]> (len1*Len2,Newcomparator<int[]>() {@Override Public intCompareint[] I1,int[] i2) { returnI1[0]+I1[1]-i2[0]-i2[1]; } }); for(inti=0;i<nums1.length;i++){ for(intj=0;j<nums2.length;j++){ int[] s=New int[]{nums1[i],nums2[j]}; Queue.add (s); } } if(k>queue.size ()) K=queue.size (); while(k>0) {Res.add (Queue.poll ()); K--; } returnRes; }
373. Find K Pairs with smallest Sums