LeetCode 888. 公平的糖果棒交換
阿新 • • 發佈:2021-02-16
技術標籤:刷題
難度:簡單。
先計算兩人的糖果總量,再進行排序,使用雙指標的方法求出答案。
正確解法:
class Solution {
public:
vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
int n = A.size(), m = B.size();
vector<int> ans;
if((n == 1 && m == 1) || n == 0 || m == 0)return ans;
int a_sum = 0, b_sum = 0;
for(int i = 0; i < n; i++)a_sum += A[i];
for(int i = 0; i < m; i++)b_sum += B[i];
int target = (a_sum - b_sum) / 2;
if(target == 0)return ans;
sort(A.begin(), A.end());
sort(B.begin(), B.end());
int i = 0, j = 0;
while(i < n && j < m){
if(A[i] - B[j] == target){
ans.push_back(A[i]);
ans.push_back(B[j]);
break;
}
else if(A[i] - B[j] < target){
i++;
}
else {
j++;
}
}
return ans;
}
};