373. 查找和最小的K对数字
-
这题直接定义一个结构体,内部自定义排序规则,属性为两个int数,分别代表第一个和第二个数组的元素,还有一个和的属性,用来写排序规则,排完序后,将$ kk=min(k,nums1.size()*nums2.size()) $个元素存入vector<vector
>v(kk)中,返回v即可。
class Solution {
public:
struct node{
int z,y;
int sum;
bool operator<(const node &other)const{
return this->sum<other.sum;
}
};
int min(int a,int b)
{
if(a<=b)
return a;
return b;
}
vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
if(nums1.size()==0||nums2.size()==0)
return {};
node n[nums1.size()*nums2.size()+10];
int ops=0;
for(int i=0;i<nums1.size();i++)
{
for(int j=0;j<nums2.size();j++)
{
n[ops].z=nums1[i];
n[ops].y=nums2[j];
n[ops].sum=n[ops].z+n[ops].y;
ops++;
}
}
sort(n,n+ops);
int kk=min(k,nums1.size()*nums2.size());
vector<vector<int>>v(kk);
for(int i=0;i<kk;i++)
{
v[i].push_back(n[i].z);
v[i].push_back(n[i].y);
}
return v;
}
};