1. 程式人生 > 其它 >LeetCode 888. 公平的糖果棒交換

LeetCode 888. 公平的糖果棒交換

技術標籤:刷題

難度:簡單。
先計算兩人的糖果總量,再進行排序,使用雙指標的方法求出答案。

正確解法:

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; } };

在這裡插入圖片描述