給定一個非負整數num,重複添加其所有數字,直到結果只有一個數字。在java中添加數字
例如:
鑑於NUM = 38,則處理是這樣的:3 + 8 = 11,1 + 1 = 2。由於2僅具有一個數字,返回它。
跟進: 你可以在O(1)運行時沒有任何循環/遞歸嗎?
我只是想出了一個解決方案,我分割給定的數字和循環,直到我只有一個數字。
這裏是我的解決方案:
public static void main(String[] args) {
int result = onlyDigit(385);
System.out.println(result);
}
public static int onlyDigit(int num){
if(num<10) return num;
ArrayList<Integer> digitList = splitNum(num);
int result = sum(digitList);
while(result >= 10){
digitList = splitNum(result);
result = sum(digitList);
}
return result;
}
public static int sum(ArrayList<Integer> list){
int sum = 0;
for (Integer integer:list){
sum = integer + sum;
}
return sum;
}
public static ArrayList<Integer> splitNum(int num){
ArrayList<Integer> digitList = new ArrayList<>();
while(num!=0){
digitList.add(num%10);
num = num/10;
}
return digitList;
}
我剛想出一個解決方案,我分割給定的數字和循環,直到我只有一個數字 – CoXier
你做到了嗎?你有什麼問題? – 2016-06-01 03:21:24
請參閱如何創建[mcve]。 –