LeetCode Add Digits

来源:互联网 发布:ubuntu 16.04 安装完 编辑:程序博客网 时间:2024/05/01 21:35

原题链接在这里:https://leetcode.com/problems/add-digits/

最基本的想法就是每一位相加知道成为个位数,但本题有follow-up, require O(1) time.

最后的结果只能是0-9,列数看结果,发现num%9对于大多数正数都合适,但corner case 9和9的倍数,本应该返回九,却返回了0,所以单独讨论。Method 3 是返回(num-1)%9+1,  避免了9与9的倍数corner case,但需要注意新的corner case num == 0,此时num==0需要单独讨论。

AC Java:

public class Solution {    public int addDigits(int num) {        if(num<0)            return Integer.MIN_VALUE;        if(num==0)            return 0;                    /*Method 1        while(num/10 != 0){            int sum = 0;            while(num>0){                sum+=num%10;                num/=10;            }            num = sum;        }        return num;        */        /*Method 2        if(num%9 == 0)            return 9;        return num%9;        */                //Method 3        return (num-1)%9+1;    }}


0 0