LeetCode oj 258. Add Digits(数字根)

来源:互联网 发布:连云港网站建设优化 编辑:程序博客网 时间:2024/06/08 15:19

258. Add Digits

 
 My Submissions
  • Total Accepted: 127957
  • Total Submissions: 257201
  • Difficulty: Easy

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 = 111 + 1 = 2. Since 2 has only one digit, return it.

Follow up:

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

给你一个数,将这个数的各个位相加,直到这个数只有一位

经典的数字根问题,之前做过,就是看能不能除开9,下面给出具体证明

设一个数是abcde,则abcde = a * 10000 + b * 1000 + c * 100 + d * 10 + e,将这个式子拆一下得到(a + b + c + d + e) + (a * 9999 + b * 999 + c * 99 + d * 9),

显然右侧括号的式子可以整除9,所以num % 9的式子成立

需要注意的是特判0 和 9

public int addDigits(int num) {        if(num % 9 == 0){            if(num == 0)              return 0;            else              return 9;        }        while(num >= 9){            num %= 9;        }        return num;    }



0 0
原创粉丝点击