fengsehng
V2EX  ›  问与答

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

  •  1
     
  •   fengsehng · Jul 9, 2016 · 3523 views
    This topic created in 3769 days ago, the information mentioned may be changed or developed.

    题目描述:

    求整数的 Root:给定正整数,求每位数字之和;如果和不是一位数,则重复; 输入:输入任意一个或多个整数 输出:输出各位数字之和,直到和为个位数为止(输入异常,则返回-1),多行,每行对应一个输入数据的结果。

    样例输入:

    25 865

    样例输出:

    7 1

    思路分析:

    • 首先求个位数相加,经典方法,求余相除
    • 要求各个位数的和是小于 10 ,可以采用递归或者循环

    代码:

    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 面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

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

    这里写图片描述

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

    出题到底是考察什么?先想清楚这些事情再去教别人做算法题
    43588
    43588
    Jul 10, 2016
    15
    8 + 6 + 5 = 19

    1 + 9 = 0

    为啥答案是 1 ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5075 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 01:45 · PVG 09:45 · LAX 17:45 · JFK 20:45
    ♥ Do have faith in what you're doing.