1552. Magnetic Force Between Two Balls
Solutions
class Solution {
public:
bool valid(vector<int> & position, int width, int m) {
int i = 1, b = 0, prev = position[0];
for (b = 1; b < m; b++) {
while (i < position.size() && position[i] - prev < width)
i++;
if (i == position.size()) return false;
prev = position[i++];
}
return b == m;
}
int maxDistance(vector<int>& position, int m) {
sort(position.begin(), position.end());
int lo = 1, hi = position.back() - position[0];
while (lo < hi) {
int mid = lo + ((hi - lo) >> 1);
if (valid(position, mid + 1, m))
lo = mid + 1;
else
hi = mid;
}
return lo;
}
};Last updated