Add Digits(leetcode258)

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

Example:

Input: 38
Output: 2 
Explanation: 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?

//常規操作
public static int addDigits(int num) {

    int result = num;
    while(result >=10){
         int sum = result;
         result = 0;
         while(sum>0){
             result+=sum%10;
             sum = sum/10;
         }
    }
    return result;
}

 

//看到別人這麼寫的  怎麼推算的 不想動腦啦
public int addDigits2(int num) {
    if (num == 0){
        return 0;
    }
    if (num % 9 == 0){
        return 9;
    }
    else {
        return num % 9;
    }
}

git:https://github.com/woshiyexinjie/leetcode-xin

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章