栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Leetcode 1780. Check if Number is a Sum of Powers of Three [Python]

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode 1780. Check if Number is a Sum of Powers of Three [Python]

基本思路还是暴力:处理小于3的时候是不是1,0 2 都得不到。然后设置一个求解的函数,记录上次的power是多少,每次start(新的power)从1开始遍历,逐渐+1,直到3start 大于n的时候,start-1,得到最接近n的值,此时如果start和上次的power一样,则违反题目要求,返回false;不然则可以往下继续,然后n-3start,更新n的值,如果n >= 3.那继续往下迭代,此时的power数是start,所以要更新power的上限,也就是limit为start。当前n<3 后,不是0 或者1,也就是全部减完,或者留下30,则返回False,反之则是True。由于每次的n都是在减少,相应的最大的使得3power 小于等于n的power也会逐步变小。

class Solution:
    def checkPowersOfThree(self, n: int) -> bool:
        if n == 0 or (n < 3 and n != 1):return False
        return self.find(n, float('inf'))
        
    def find(self, n, limit):
        power = 1
        while 3**power <= n:
            power += 1
        power -= 1
        if power == limit:return False
        n -= 3**power
        if n == 1 or n == 0:return True
        if n == 2:return False
        if n >= 3:return self.find(n, power)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/725737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号