2918. 数组的最小相等和
思路:先判断出两数组无法相等的情况,然后再去找最小值。
class Solution {
public:
long long minSum(vector<int>& nums1, vector<int>& nums2) {
int n=nums1.size(),m=nums2.size();
int ans1=0,ans2=0;
long long sum1=0,sum2=0;
for(int i=0;i<n;i++)
if(nums1[i]==0) ans1++;
else sum1+=nums1[i];
for(int i=0;i<m;i++)
if(nums2[i]==0) ans2++;
else sum2+=nums2[i];
//无法相等的情况
if(ans1==0&&sum1<sum2+ans2||ans2==0&&sum1+ans1>sum2) return -1ll;
//有相等的情况,就把0看作1,来找到最大的,小的那个0的部分自然就需要增大了
return max(sum1+ans1,sum2+ans2);
}
};