在代號為 C-137 的地球上,Rick 發(fā)現(xiàn)如果他將兩個球放在他新發(fā)明的籃子里,它們之間會形成特殊形式的磁力。Rick 有 n 個空的籃子,第 i 個籃子的位置在 position[i] ,Morty 想把 m 個球放到這些籃子里,使得任意兩球間 最小磁力 大。
已知兩個球如果分別位于 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ī)劃,事實(shí)上,博主寫動態(tài)規(guī)劃寫到一半的時候,突然就意識到,動態(tài)規(guī)劃時間復(fù)雜度不能通過,所以想到了二分查找,這個算法思路很棒,感興趣的學(xué)習(xí)一下,解題代碼如下:
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)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前題目:1552.兩球之間的磁力-快速排序+二分查找-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://aaarwkj.com/article26/dihccg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、云服務(wù)器、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容