2 回答

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊
讓我們分解一下。
的條件while True
取決于evenIdx < len(arr) and oddIdx < len(arr)
。
所以外循環(huán)不會迭代超過 O(N) where N=len(arr)
。
但是內(nèi)循環(huán)呢?
讓我們考慮這里的選項:
我們只有 1 次外部循環(huán)迭代,其中內(nèi)部函數(shù)前進(jìn)
evenIdx
并oddIdx
到達(dá)中斷點。所以整體 O(N)。外層循環(huán)迭代 K 次。但是
evenIdx
,oddIdx
不要重置。在第 1 次迭代中,evenIdx/oddIdx
到達(dá) 0 到 N 之間的某個位置,第 2 次迭代它們?nèi)匀焕^續(xù)前進(jìn),第 3 次迭代相同,直到第 K 次迭代。最終evenIdx/oddIdx
前進(jìn)了 O(N) 次。所以又是O(N)。
可以進(jìn)行更嚴(yán)格的分析,但仍然是 O(N)。

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊
這是因為您沒有通過外循環(huán)每次都重置evenIdx
或oddIdx
返回。0
每次重復(fù)外循環(huán)時,內(nèi)循環(huán)都會從上一次停止的地方開始。
因此,您不會對列表執(zhí)行多次迭代——只要兩個內(nèi)部循環(huán)都到達(dá)末尾,您就會跳出外部循環(huán)。并且每個內(nèi)部循環(huán)只訪問偶數(shù)或奇數(shù)元素一次。
添加回答
舉報