1552. 两球之间的磁力
该题和875题爱吃香蕉的珂珂是同类题目,采用二分查找方式
特点:有序,找右边界
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int canputballbyspace(int *position, int positionSize, int mid){
int begin = position[0];
int cnt = 1;
int i;
for(i = 1; i<positionSize;i++) {
if(position[i] - begin >= mid) {
begin = position[i];
cnt++;
}
}
return cnt;
}
int maxDistance(int* position, int positionSize, int m){
qsort(position, positionSize, sizeof(position[0]), cmp);
int l = 1;
int r = position[positionSize-1] - position[0];
int mid;
while(l<=r) {
mid = l + (r - l) / 2;
int ballnum = canputballbyspace(position, positionSize, mid);
if(ballnum == m) {
l = mid + 1;
} else if(ballnum > m) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return l - 1;
}```

浙公网安备 33010602011771号