前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 面试题17. 打印从1到最大的n位数

LeetCode 面试题17. 打印从1到最大的n位数

作者头像
村雨遥
发布2020-04-09 15:21:40
5800
发布2020-04-09 15:21:40
举报
文章被收录于专栏:JavaParkJavaPark

题目

面试题 17. 打印从 1 到最大的 n 位数[1]

描述

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

示例 1:

输入: n = 1输出: [1,2,3,4,5,6,7,8,9]

说明:

  • 用返回一个整数列表来代替打印
  • n 为正整数

解题思路

  1. n其实是要打印出的数字的最大值+1的数中所含0的个数,即假设n = 3,那么要打印的最大数为 999,而999 + 1 = 1000则含有30
  2. 我们总是将最高位置为1,而后边的数则全为0,从而得到一个字符串stringBuilder,将其转换为int类型;
  3. 接上一步得到的int类型数值-1则为最后要返回的数组的大小;
  4. 然后将1到最大的n位数存放在数组中即可;

实现

代码语言:javascript
复制
package math;

import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Version : 1.0
 * Author  : 村雨遥
 * Email   : cunyu1024@foxmail.com
 * Website : https://cunyu1943.github.io
 * 公众号   : 村雨遥
 * Date    : 2020/4/6 11:31
 * Project : LeetCode
 * Package : math
 * Class   : Seventeen
 * Desc    : 面试题17. 打印从1到最大的n位数
 */
public class Seventeen {
	public static void main(String[] args) throws Exception {
		Seventeen seventeen = new Seventeen();
		int n = 1;
		System.out.println(Arrays.toString(seventeen.printNumbers(n)));
	}

	/**
	 * 打印从1到最大的n位数
	 * @param n
	 * @return 从1到最大的n位数组成的数组
	 */
	public int[] printNumbers(int n) {
		StringBuilder stringBuilder = new StringBuilder("1");
		for (int i = 0; i < n; i++) {
			stringBuilder.append("0");
		}

		int size = Integer.parseInt(stringBuilder.toString()) - 1;

		int[] resultArr = new int[size];
		for (int i = 0; i < size; i++) {
			resultArr[i] = i + 1;
		}

		return resultArr;
	}
}

参考资料

[1]

面试题17. 打印从1到最大的n位数: https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 村雨遥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 描述
  • 解题思路
  • 实现
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档