求整数的 Root:给定正整数,求每位数字之和;如果和不是一位数,则重复; 输入:输入任意一个或多个整数 输出:输出各位数字之和,直到和为个位数为止(输入异常,则返回-1),多行,每行对应一个输入数据的结果。
25 865
7 1
import java.util.Scanner;
public class Main {
static int[] num = {1,2,5,10,20,50,100};
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int input = scan.nextInt();
if(input < 1){
System.out.println(-1);
}else{
System.out.println(getRoot(input));
}
}
}
public static int getRoot(int n){
int all = 0;
int a = 0;
while(n > 0){
a = n % 10;
n = n / 10;
all = all +a;
}
if(all >= 10){
return getRoot(all);
}
return all;
}
}
1
just4test 2016-07-09 20:45:17 +08:00
还以为有什么先进的玩意,结果根本没有。
|
2
just4test 2016-07-09 20:45:32 +08:00
还有那个 num 的变量声明了也没用到啊
|
3
wzxjohn 2016-07-09 20:55:16 +08:00 via iPhone
兄弟,先去吧 Leet Code Easy 做完再去面试吧。。。
这题是 O(1) 的。 |
4
wzxjohn 2016-07-09 20:57:57 +08:00 via iPhone
哦, n 个数,那是 O(n)
|
6
leewangyang 2016-07-09 21:23:56 +08:00 via Android
楼上说的对。。。对每个数是 o(1)的,模 9 为 0 就是 9 ,非 0 就是余数
|
8
fengsehng OP 这个题,看错题目了,小于 10 ,看成小于等于 10 了,最后一步判断<10
|
10
9hills 2016-07-10 10:09:09 +08:00 via Android
你这个假如题目有 10 分,只能得四五分吧,就不是正确答案属于酌情给分范围…
|
12
loading 2016-07-10 11:11:29 +08:00 via Android
有这样推广的?
block |
13
hxtheone 2016-07-10 11:22:16 +08:00
分享代码是好的, 但是起码把代码弄好看点吧(缩进, 无用变量), 而且这种 leetcode easy 难度都不如的题有分享的意义吗?
|
14
9hills 2016-07-10 11:50:51 +08:00 via iPad
|
15
43588 2016-07-10 16:46:21 +08:00
8 + 6 + 5 = 19
1 + 9 = 0 为啥答案是 1 ? |