博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 258. Add Digits——我擦,这种要你O(1)时间搞定的必然是观察规律,总结一个公式哇...
阅读量:5985 次
发布时间:2019-06-20

本文共 1216 字,大约阅读时间需要 4 分钟。

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

For example:

Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.

Follow up:

Could you do it without any loop/recursion in O(1) runtime?

解法1:

class Solution(object):    def addDigits(self, num):        """        :type num: int        :rtype: int        """        # 1-9=1-9        # 10=1        # 11=2        # 12=3 ...        # 18=9        # 19=>1        # 20=>2        # 21=>3        # 99=>9        # 100=>1        # 101=>2        # 999=>9        def sum_digits(n):            ans = 0            while n:                ans += n%10                n /= 10            return ans                    ans = num        while ans > 9:            ans = sum_digits(ans)        return ans

观察发现是一个循环数组:

class Solution(object):    def addDigits(self, num):        """        :type num: int        :rtype: int        """        # 1-9=1-9        # 10=1        # 11=2        # 12=3 ...        # 18=9        # 19=>1        # 20=>2        # 21=>3        # 99=>9        # 100=>1        # 101=>2        # 999=>9        if num == 0: return 0        return 9 if num % 9 == 0 else num % 9

 

 

转载地址:http://erulx.baihongyu.com/

你可能感兴趣的文章
Linux lvs NAT模式简单部署
查看>>
excel 导出文件名乱码
查看>>
对小数取整(向上取整,向下取整,四舍五入,舍弃小数)
查看>>
centos6安装mongodb
查看>>
MySQL-8.0 源码包方式安装
查看>>
linux服务器SVN部署方案
查看>>
寄语笑笑
查看>>
PostgreSQL从继承到分区(二)
查看>>
Class yii\base\Behavior
查看>>
ejb的小例子(未能成功运行)
查看>>
Linux学习篇之shell编程基础
查看>>
Java操作文件内容
查看>>
责任链模式在Tomcat中的应用
查看>>
FlexAir获取MAC地址代码
查看>>
mysql常用语句
查看>>
C#界面,C++算法
查看>>
京东酝酿促销战 新电商价格大战猜想
查看>>
Mac终端命令
查看>>
mysql查重
查看>>
修改npm全局安装的位置
查看>>