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

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

這個解的時間復雜度是 O(logn) 嗎?

這個解的時間復雜度是 O(logn) 嗎?

冉冉說 2021-10-10 15:34:51
我已經為一個挑戰編寫了以下解決方案,但我不確定它的時間復雜度:def ASCIIConversion(string):     newStr = ''    for chr in string:        if chr.isspace():             newStr = newStr + ' '        else:            newStr += str(ord(chr))    return newStr程序的復雜度 O(logn) 是不是因為 else 語句?
查看完整描述

3 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

最壞情況下的時間復雜度計算如下(假設字符串最大長度為 n):


newStr = ''  # will be done once so 1 time.


for chr in string: # is iterating on the input with max length of n so n times.

    if chr.isspace(): # will be checked once it is in the loop so 1 time per each iteration.

        newStr = newStr + ' ' # also once per iteration if the if condition is satisfied

    else: # will be chehcked once per iteration

        newStr += str(ord(chr)) # if else is satisfied


return newStr # will be done 1 time.

我們將假設常數時間是 c 所以:


Time complexity = 1 + n(c*c + c*c) + 1 = 2+Cn => O(n)


查看完整回答
反對 回復 2021-10-10
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

這個解仍然是 O(n)。實際上,我不完全確定為什么 else 語句會影響這一點。您正在對字符串中的每個字符執行一次操作。

即使對于每個字符,您正在執行多個指令(比較等),您可能認為復雜性類似于 O(3n),但您當然忽略了系數。我相信您知道這一點,但是對于將來查看此問題、對 else 語句感到困惑的人來說,這可能會有所幫助。


查看完整回答
反對 回復 2021-10-10
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

不考慮 if-else 條件,循環遍歷字符串的每個字符,因此時間復雜度為 O(n)。


查看完整回答
反對 回復 2021-10-10
  • 3 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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