LeetCode258-各位相加(猜想公式)

1、正常的情况就是循环,把每一位加起来。

2、O1时间,还真是想不到。

看了一下答案

public int addDigits(int num) {
        if (num == 0) return 0;
        return (num-1)%9+1;
    }

 

所以说O1,就意味着一个公式。

 

这个公式,只能靠从输入输出中,找规律猜出来,推倒是很难的。

 

要求是加到只有各位,那就是只有1~9这几个数字。 0 是不可能的,没有一个数各位相加为0,除了0

 

那么要做的就是给num 和 1~9 做一个映射,这个映射关系就是公式!

 

9个数,其实一般结果都是会循环的,不然也不会有规律。

 

1~9 就是它本身

10 ~ 19   这里的数字%9 都是对的 10% 9 =1 11 %9 =2

但是 18 % 9 =0 了 1+8 应该是9

19%9 =1 但是1+9=10  1+0 = 0

17%9 = 8   18要得到9  就要是(18-1)%9+1.

这样用在19上面 就是 (19-1)%9 + 1 = 1

也对

 

所以猜想公式 就是 (num-1)%9+1

 

就是这么没有道理

 

转载于:https://www.cnblogs.com/weizhibin1996/p/9656944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值