在代號為 C-137 的地球上,Rick 發(fā)現(xiàn)如果他將兩個球放在他新發(fā)明的籃子里,它們之間會形成特殊形式的磁力。Rick 有 n 個空的籃子,第 i 個籃子的位置在 position[i] ,Morty 想把 m 個球放到這些籃子里,使得任意兩球間 最小磁力 大。
專注于為中小企業(yè)提供成都網(wǎng)站設計、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)宿松免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。已知兩個球如果分別位于 x 和 y ,那么它們之間的磁力為 |x - y| 。
給你一個整數(shù)數(shù)組 position 和一個整數(shù) m ,請你返回大化的最小磁力。
示例 1:
輸入:position = [1,2,3,4,7], m = 3
輸出:3
解釋:將 3 個球分別放入位于 1,4 和 7 的三個籃子,兩球間的磁力分別為 [3, 3, 6]。最小磁力為 3 。我們沒辦法讓最小磁力大于 3 。
示例 2:
輸入:position = [5,4,3,2,1,1000000000], m = 2
輸出:999999999
解釋:我們使用位于 1 和 1000000000 的籃子時最小磁力大。
這個題目也是非常幫哈,對于這個題目,一開始的時候,博主想的時快速排序+動態(tài)規(guī)劃,事實上,博主寫動態(tài)規(guī)劃寫到一半的時候,突然就意識到,動態(tài)規(guī)劃時間復雜度不能通過,所以想到了二分查找,這個算法思路很棒,感興趣的學習一下,解題代碼如下:
void quick(int *a,int low,int high){if(lowint l=low,h=high,p=a[low];
while(lowwhile(low=p){high--;
}
a[low]=a[high];
while(lowlow++;
}
a[high]=a[low];
}
a[low]=p;
quick(a,l,low-1);
quick(a,low+1,h);
}
}
bool judge(int threshold,int* position, int positionSize, int m){int count=1;
int pre_index=0;
for(int i=1;iif(position[i]-position[pre_index]>=threshold){count++;
pre_index=i;
}
if(count>=m){return true;
}
}
return false;
}
int maxDistance(int* position, int positionSize, int m){quick(position,0,positionSize-1);
int min=1,max=position[positionSize-1];
while(min<=max){int mid=(max+min)/2;
if(judge(mid,position,positionSize,m)){min=mid+1;
}
else{max=mid-1;
}
}
return min-1;
}
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧