LeetCode题解(0842):将数组拆分成斐波那契数列(Python)
发布日期:2021-06-29 19:58:14
浏览次数:2
分类:技术文章
本文共 2253 字,大约阅读时间需要 7 分钟。
题目:(中等)
标签:字符串、贪心算法、回溯算法
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N 2 ) O(N^2) O(N2) | O ( N ) O(N) O(N) | 224ms (12.77%) |
Ans 2 (Python) | O ( N 2 ) O(N^2) O(N2) | O ( N ) O(N) O(N) | 40ms (96.72%) |
Ans 3 (Python) |
解法一(暴力解法):
class Solution: def splitIntoFibonacci(self, S: str) -> List[int]: N = len(S) # 判断数字是否合法 def is_valid(n): return not (int(n) > 0 and n[0] == "0") and int(n) <= (2 ** 31 - 1) # 检查是否为斐波那契数列 def is_fibonacci(m, n): if not is_valid(S[:m]) or not is_valid(S[m:n]): return False lst = [int(S[:m]), int(S[m:n])] idx1 = n while idx1 < N: nn = lst[-1] + lst[-2] # 当前项 s1 = str(nn) idx2 = idx1 + len(s1) s2 = S[idx1:idx2] if is_valid(s2) and s1 == s2: lst.append(nn) idx1 = idx2 else: return False return lst # 筛选所有的斐波那契数列 for i in range(1, N): for j in range(i + 1, N): fibonacci_lst = is_fibonacci(i, j) if fibonacci_lst: return fibonacci_lst return []
解法二(优化解法一):
class Solution: def splitIntoFibonacci(self, S: str) -> List[int]: MAX_INT = 2147483647 N = len(S) # 判断数字是否合法 def is_valid(n): return not (int(n) > 0 and n[0] == "0") and int(n) <= MAX_INT # 检查是否为斐波那契数列 def is_fibonacci(m, n): if not is_valid(S[:m]) or not is_valid(S[m:n]): return False lst = [int(S[:m]), int(S[m:n])] idx1 = n while idx1 < N: nn = lst[-1] + lst[-2] # 当前项 s1 = str(nn) idx2 = idx1 + len(s1) s2 = S[idx1:idx2] if is_valid(s2) and s1 == s2: lst.append(nn) idx1 = idx2 else: return False return lst # 筛选所有的斐波那契数列 for i in range(1, min(10, N)): for j in range(i + 1, min(i + 10, N)): fibonacci_lst = is_fibonacci(i, j) if fibonacci_lst: return fibonacci_lst return []
转载地址:https://dataartist.blog.csdn.net/article/details/108079585 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月26日 00时38分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SEO人员,为什么要思考网站安全重要性?
2019-04-30
SEO人员,怎么将网站关键词排进SERP前十名?
2019-04-30
uni-app实战项目,跟着做完你就可以独立作战了(二)
2019-04-30
uni-app实战项目,跟着做完你就可以独立作战了(三)
2019-04-30
uni-app实战项目,跟着做完你就可以独立作战了(四)
2019-04-30
uni-app实战项目,跟着做完你就可以独立作战了(一)
2019-04-30
前端学习路线,让你从此不再迷茫
2019-04-30
毕业季即将面临举行完毕,赶快用此代码表达你的女神吧!
2019-04-30
抓住毕业会的尾巴,用星空特效去表白你的女神吧!
2019-04-30
历经一个月的时间,在大家的共同努力下新星计划圆满结束,让我们看一下详细数据吧!
2019-04-30
数据结构期末复习·表达式树(重写)
2019-04-30
数据结构期末复习·括号匹配
2019-04-30
数据结构期末复习·网络打印机选择
2019-04-30
2019数据结构期末考试·3·文件查找
2019-04-30
2018数据结构期末考试·2·后缀表达式计算并且转化为中缀表达式
2019-04-30
安装Linux虚拟机并配置c语言运行调试
2019-04-30
js中变量提升
2019-04-30
思考总结:如何使用缓存才是合理的?
2019-04-30
Hive 分区--静态分区、动态分区
2019-04-30