文章目錄
各位相加
題目描述
code
方法一
逾時
//一個整數 num, 反複将各個為相加,知道結果為一位數
//超出時間限制 --進行優化,使用更搞笑方式處理--目前使用兩層for循環進行處理,這樣效率比較低
class Solution1 {
public int addDigits(int num) {
//進行處理
while (!isOne(num)) {
//擷取每一位數
String s = num + "";
int tmp = 0;
for (int i = 0; i < s.length(); i++) {
int t = s.charAt(i) - '0';
//進行相加
tmp += t;
}
num = tmp; //進行指派
}
return num;
}
//判斷是否是一位數
private boolean isOne(int num) {
return num > 0 && num <= 9;
}
}
方式二
保留求解,不逾時
class Solution {
//進行位相加
public int addDigits(int num) {
int sum = 0;
while (num >= 10) { //不是個位數
sum = 0;
//不進行轉換成字元串
while (num!=0) {
int temp = num % 10; //求個位數
sum += temp; //加起來
num /= 10; // 然後再除以10
}
num = sum; //然後進行指派
}
return num;
}
}
方式三
網上看到
class Solution {
public int addDigits(int num) {
return (num - 1) % 9 + 1;
}
}