zoukankan      html  css  js  c++  java
  • 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

    就是这么没有道理

  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9656944.html
Copyright © 2011-2022 走看看