2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您修剪遞歸的不相關(guān)分支,則可以改進(jìn)分而治之的實(shí)現(xiàn)以滿(mǎn)足所需的運(yùn)行時(shí)間。
將當(dāng)前數(shù)組分為兩個(gè)子數(shù)組后,比較每個(gè)子數(shù)組的第一個(gè)和最后一個(gè)元素。如果兩者都是負(fù)數(shù)并且第一個(gè)小于最后一個(gè),您可以確定該子數(shù)組中的所有元素都是負(fù)數(shù),并且您不必對(duì)其進(jìn)行遞歸調(diào)用(因?yàn)槟浪鼘?0 貢獻(xiàn))總金額)。
如果子數(shù)組中的所有元素都是正數(shù),您也可以停止遞歸(也可以通過(guò)比較子數(shù)組的第一個(gè)和最后一個(gè)元素來(lái)驗(yàn)證) - 在這種情況下,您必須將該子數(shù)組的所有元素相加-array,所以沒(méi)有必要繼續(xù)遞歸。

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
我對(duì) O(Log N) 的建議是直接比較以滿(mǎn)足兩個(gè)標(biāo)準(zhǔn)中的第二個(gè):最后一項(xiàng)小于第一項(xiàng)。 return vector[0] >= vector[iN-1]
如果你想要更復(fù)雜的東西,我忘記了算法名稱(chēng),但你可以在中間點(diǎn)獲取數(shù)組,并從那里進(jìn)行兩次有序搜索:從中間到開(kāi)始,然后從中間到結(jié)束
添加回答
舉報(bào)