求整数的 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 ? |