負でない整数numを指定すると、結果に1桁だけが含まれるまで、すべての桁を繰り返し追加します。例えばJavaで数字を追加する
:
考えるnumが= 38、プロセスは次のようである:一つだけ桁を有する3 = 11 + 8、1 + 1 = 2 2ため、それを返します。
フォローアップ: O(1)ランタイムでループ/再帰なしで実行できますか?
私はちょうど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
のみ1桁を取得するまで、私は与えられた数とループを分割する解決策を考え出しますか?あなたの問題は何ですか? –
[mcve]の作成方法をご覧ください。 –