力扣2615.等值距离和
-
分组求距离和
-
class Solution { public: vector<long long> distance(vector<int>& nums) { int n = nums.size(); unordered_map<int, vector<int>> groups; for (int i = 0; i < n; ++i) groups[nums[i]].emplace_back(i); vector<long long> res(n); for(auto &[_,a] : groups) { int m = a.size(); long long lsum = 0,rsum = accumulate(a.begin(),a.end(),0LL); for(int i=0;i<m;i++) { rsum -= a[i]; res[a[i]] = (long long)a[i] * i - lsum + rsum - (long long)a[i] * (m - i - 1); lsum += a[i]; } } return res; } };