Minimum Sum of Squared Difference LeetCode solution in C++
1class Solution {2public:3long long minSumSquareDiff(vector<int> &nums1, vector<int> &nums2, int k1, int k2) {4int n = nums1.size();5vector<int> diff(n);6for (int i = 0; i < n; ++i) {7diff[i] = abs(nums1[i] - nums2[i]);8}9int M = *max_element(diff.begin(), diff.end());10vector<int> bucket(M + 1);11for (int i = 0; i < n; ++i) {12bucket[diff[i]]++;13}14int k = k1 + k2;15for (int i = M; i > 0; --i) {16if (bucket[i] > 0) {17int minus = min(bucket[i], k);18bucket[i] -= minus;19bucket[i - 1] += minus;20k -= minus;21}22}23long long ans = 0;24for (long long i = M; i > 0; --i) {25ans += bucket[i] * i * i;26}27return ans;28}29};