题解 | #打印从1到最大的n位数# 大数问题

打印从1到最大的n位数

http://www.nowcoder.com/practice/4436c93e568c48f6b28ff436173b997f

本题其实考察的是大数问题

import java.util.*;


public class Solution {
    int[] ans;
    int count = 0;

    public int[] printNumbers(int n) {
        ans = new int[(int) Math.pow(10, n) - 1];
        // digit表示要生成的数字的位数
        for (int digit = 1; digit <= n; digit++) {
            // 为了避免数字开头出现0,先把首位first固定,first取值范围为1~9
            for (char first = '1'; first <= '9'; first++) {
                char[] num = new char[digit];
                num[0] = first;
                // 生成首位之后进入递归生成剩下的digit - 1位数,从0~9中取值
                dfs(1, num, digit);
            }
        }
        return ans;
    }

    private void dfs(int index, char[] num, int digit) {
        if (index == digit) {
            ans[count++] = Integer.parseInt(String.valueOf(num));
            return;
        }
        for (char i = '0'; i <= '9'; i++) {
            num[index] = i;
            dfs(index + 1, num, digit);
        }
    }
}
全部评论

相关推荐

11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务