algorithm - O(sumof(n)) 时间复杂度
问题描述
这是写它的正确方法吗?我问是因为我写的这个程序:
def check(self, front, s, back):
if(s[front:back] == s[front:back][::-1]):
return s[front:back]
else:
return self.check(front, s, back-1)
def checkIter(self, front, s, back, longest):
r = self.check(front, s, back)
if(len(r) >= len(longest)): longest = r
if(front < back):
return self.checkIter(front+1,s,back, longest)
else:
return longest
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
return self.checkIter(0,s,len(s),"")
它的输入longestPalindrome('cbbd')
运行约 10 次产生输出:
"cbbd" "cbb" "cb" "c" "bbd" "bb" "b" "bd" "b" "d"
. 在给定的相同输入上longestPalindrome('cbbda')
:
"cbbda" "cbbd" "cbb" "cb" "c" "bbda" "bbd" "bb" "b" "bda" "bd" "b" "da" "d" "a"
所以这不可能是 O(n)
解决方案
指定的总和等于n(n+1)/2
。因此,它在O(n^2)
.
推荐阅读
- javascript - 如何在单击按钮时将文本颜色更改为 gif(背景剪辑)?
- asp.net - 如何使用正则表达式处理用于密码验证的拉丁字符?
- laravel - 用脸书登录
- android - 如何在 2 个随机键下检索子数据
- python - 设置散景布局元素的背景颜色
- javascript - 查找函数中的“从不”类型上不存在属性“id”
- python - 如何在张量流中导出 tf.estimator.LinearRegressor 中 bucketized_column 的权重?
- javascript - 在 Promise 链的早期处理错误
- python - 如何更改数据框中的单个值?
- django - DRF - 未提供身份验证凭据