296. Best Meeting Point
class Solution {
public:
int minTotalDistance(vector<vector<int>>& grid) {
const int M = grid.size(), N = M == 0 ? 0 : grid[0].size();
vector<int> rows, cols;
int res = 0;
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
if (grid[i][j] != 1) continue;
rows.push_back(i);
cols.push_back(j);
}
}
sort(cols.begin(), cols.end());
while (i < j) res += rows[j] - rows[i] + cols[j--] - cols[i++];
return res;
}
};
Last updated