Leetcode 306. Additive Number

Problem

An additive number is a string whose digits can form an additive sequence.

A valid additive sequence should contain at least three numbers. Except for the first two numbers, each subsequent number in the sequence must be the sum of the preceding two.

Given a string containing only digits, return true if it is an additive number or false otherwise.

Note: Numbers in the additive sequence cannot have leading zeros, so sequence 1, 2, 03 or 1, 02, 3 is invalid.

Algorithm

Use DFS to solve the problem, keeping track of the previous two numbers on the path, and continue searching forward if the condition is met.

Code

python3 复制代码
class Solution:
    def isAdditiveNumber(self, num: str) -> bool:
        nlen = len(num)
        def dfs(s, num1, num2, cnts):
            if s == nlen:
                return cnts >= 3

            for i in range(s, nlen):
                if s < i and num[s] == '0':
                    break
                num3 = int(num[s:i+1])
                if cnts >= 2 and num3 != num1 + num2: 
                    continue
                if dfs(i+1, num2, num3, cnts+1):
                    return True
            
            return False

        return dfs(0, 0, 0, 0)
相关推荐
西南胶带の池上桜17 分钟前
1.Pytorch模型应用(线性与非线性预测)
人工智能·pytorch·python
丘狸尾1 小时前
gradio uv无法add
开发语言·python
全栈陈序员2 小时前
【Python】基础语法入门(十七)——文件操作与数据持久化:安全读写本地数据
开发语言·人工智能·python·学习
爱笑的眼睛112 小时前
FastAPI 路由系统深度探索:超越基础 CRUD 的高级模式与架构实践
java·人工智能·python·ai
越甲八千3 小时前
uvicorn是啥
python
Dxy12393102163 小时前
Python字符串处理全攻略
开发语言·python
Fiona-Dong3 小时前
Louvain 算法
python·算法
坐吃山猪3 小时前
BrowserUse14-源码-ScreenShot模块-整理
linux·数据库·python
独行soc4 小时前
2025年渗透测试面试题总结-280(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮