美文网首页
Lintcode 147: 求水仙花数

Lintcode 147: 求水仙花数

作者: 原创迷恋者 | 来源:发表于2019-08-22 16:36 被阅读0次
    /**
     * 这道题需要注意的地方:
     * 1. 需要求解每位,要掌握取模的操作。
     * 2. 有两个嵌套的循环,而且循环的逻辑稍微有点复杂,不是简单的两个for就好了。我也是修改了好多次。
     * 3. 在循环中需要保持一个不变量,在这里就是num,在所有需要修改它的地方,都用拷贝出来的版本。
     *     BTW 这是Lintcode 青铜版的题目,要求在15分钟内做出来。
     *    看来我连青铜都没到。这道题我做了1个多小时。
     *    失败乃成功之母,共勉。
     */
    public class getNarcissisticNumbers {
        public static List<Integer> getNarcissisticNumbers(int n) {
            int limit_latter = (int)Math.pow(10, n);
            int limit_former = (int)Math.pow(10, n - 1);
            int[] digit = new int[n];
            int count;
            int dup1 , dup2;
            List<Integer> result = new ArrayList<>();
            int num = limit_former;
    
            for (; num < limit_latter; num++) {
                dup1 = num;
                dup2 = num;
                count = 1;
                // 求各个位,并保存在digit[]中
                while(count<n+1) {
                    digit[count-1] = dup1 % 10;
                    dup1 /= 10;
                    count++;
                }
                for (int m = 0; m < n; m++) {
                    dup2 -= Math.pow(digit[m], n);
                }
                if (dup2 == 0) {
                    result.add(num);
                }
            }
            return result;
        }
    
    

    相关文章

      网友评论

          本文标题:Lintcode 147: 求水仙花数

          本文链接:https://www.haomeiwen.com/subject/gsxosctx.html