亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 while + for 循環計算 Big O

如何使用 while + for 循環計算 Big O

慕田峪9158850 2021-12-29 10:25:42
我得到了以下代碼,并被告知 func 函數的 Big O 是 Big O (n^2)。我相信它是大 O(n),因為它應該是大 O(n + n),我錯了嗎?what is Big O of following func?nums = list(range(1, 11))K = 4def func(nums: list, K:int):             i, end = 0, len(nums)             res = []             x = []             while i < end:                     res.append(nums[i:i+K])                     i += K             for i in res:        x += i[::-1]    return xfunc(nums, K)
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

該函數將是 O(n)。第一個 while 循環的迭代次數少于n次數,因為它的上限是nend),并且每次迭代計數器都會增加 1 以上。

for 循環迭代res,它是 的子集nums。由于它是一個子集,它不會迭代n多次,使其成為 O(n)。

O(n) + O(n) = O(n),所以你的評估是正確的。


查看完整回答
反對 回復 2021-12-29
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

事實上,這個函數的大 O 是 O(n)。假設代碼格式正確。

循環res仍然具有線性運行時間。不存在res在第一個循環中添加足夠多的元素從而使第二個循環具有 O(n^2) 的大 O 的情況。


查看完整回答
反對 回復 2021-12-29
  • 2 回答
  • 0 關注
  • 273 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號