华为机试题 [10] -求数字基 root

2016-07-09 20:24:07 +08:00
 fengsehng

题目描述:

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

我的微信二维码如下,欢迎交流讨论

欢迎关注《 IT 面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号二维码如下:##

2347 次点击
所在节点    问与答
15 条回复
just4test
2016-07-09 20:45:17 +08:00
还以为有什么先进的玩意,结果根本没有。
just4test
2016-07-09 20:45:32 +08:00
还有那个 num 的变量声明了也没用到啊
wzxjohn
2016-07-09 20:55:16 +08:00
兄弟,先去吧 Leet Code Easy 做完再去面试吧。。。
这题是 O(1) 的。
wzxjohn
2016-07-09 20:57:57 +08:00
哦, n 个数,那是 O(n)
SourceMan
2016-07-09 21:18:10 +08:00
@wzxjohn 人家只是为了推广而已啦,管啥 O(n)
leewangyang
2016-07-09 21:23:56 +08:00
楼上说的对。。。对每个数是 o(1)的,模 9 为 0 就是 9 ,非 0 就是余数
wzxjohn
2016-07-09 21:46:10 +08:00
@SourceMan 唉。。。你说这分享的要是对的也就罢了,还分享错的。。。简直了。。。
fengsehng
2016-07-09 22:18:05 +08:00
这个题,看错题目了,小于 10 ,看成小于等于 10 了,最后一步判断<10
wodesuck
2016-07-10 00:14:23 +08:00
@wzxjohn +1 ,分享错的就很尴尬了……错的还是这种小学生数学……
9hills
2016-07-10 10:09:09 +08:00
你这个假如题目有 10 分,只能得四五分吧,就不是正确答案属于酌情给分范围…
fengsehng
2016-07-10 10:31:23 +08:00
@9hills 这个是机试通过了,我到现在没有找到错误,帮我指出呗,这个题不要求时间和空间效率
loading
2016-07-10 11:11:29 +08:00
有这样推广的?
block
hxtheone
2016-07-10 11:22:16 +08:00
分享代码是好的, 但是起码把代码弄好看点吧(缩进, 无用变量), 而且这种 leetcode easy 难度都不如的题有分享的意义吗?
9hills
2016-07-10 11:50:51 +08:00
@fengsehng 算法题能跑对就完了?出个排序题你给个 O(N2)的解决办法也是 ok 的?

出题到底是考察什么?先想清楚这些事情再去教别人做算法题
43588
2016-07-10 16:46:21 +08:00
8 + 6 + 5 = 19

1 + 9 = 0

为啥答案是 1 ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/291399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX