输入数字n,按顺序打印到最大的n位数

注意:没有规定类型,无论int或long 都会有可能溢出。
应当选择其他类型如String
方法一:定义长度与位数相同的字符数组,从0开始进行加一操作打印

  public static void f1(int n) {
char [] array=new char[n];
for(int i=0;i<array.length;i++) {
array[i]='0';
}
int k=0;
while(true) {
k=1;
for(int i=0;i<array.length;i++) {
if(array[i]!='9') {k=0;break;}                
}
PrintNum(array);
if(k==1)
return ;
array=addOne(array);
}    
}
 //打印字符串,因为前面0不打印   
public static void PrintNum(char []ch) {  
int k=1;
for(int i=0;i<ch.length;i++) {             
if(ch[i]>='1'||k==0) {
System.out.print(ch[i]);
k=0;                          
}
}
if(k==0)
System.out.println();
} public static char[] addOne(char [] ch) //字符串的加一操作
   { ch[ch.length-1]++;
for(int i=ch.length-1;i>0;i--) {
if(ch[i]<='9') break;
ch[i]='0';
ch[i-1]++;              
}
return ch;
}

方法二:全排列

 static void f2(int n){
if(n<=0) return ;
char [] array=new char[n];
for(int i=0;i<10;++i){
array[0]= (char) (i+'0');
Recur( array,1);
}
}
static void Recur(char[] array, int index){
if( index==array.length) { PrintNum( array ); return ;} for( int i=0;i<10;i++){ array[index]= (char) (i+'0');
Recur( array,index+1);
}
}
static void PrintNum(char []ch) {
int k=1;
for(int i=0;i<ch.length;i++) {
if(ch[i]>='1'||k==0) {
System.out.print(ch[i]);
k=0;
}
}
if(k==0)
System.out.println();
}

在java本机测试中方法一在9以内比方法二慢,9以上比方法二快许多

面试题十七:打印从1到最大的n位数的更多相关文章

  1. 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数

    面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...

  2. 《剑指offer》面试题17. 打印从1到最大的n位数

    问题描述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数 999. 示例 1: 输入: n = 1 输出: [1,2,3,4,5 ...

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

    void print_n_number(int n){ if(n<=0){ cout<<"fuckyou"; return; } string s="1 ...

  4. 面试题12:打印1到最大的n位数

    // 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> ...

  5. 算法笔记_189:历届试题 横向打印二叉树(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 二叉树可以用于排序.其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树. 当遇到空子树 ...

  6. 剑指Offer:打印从1到最大的n位数

    题目:输入数值n,按顺序打印从1到最大的n位数,例如输入n=3,则从1,2,3,一直打印到999 陷阱:若使用循环遍历 1- 999...9 并依次输出,当位数n过大时,无论将其存入int或long或 ...

  7. 大数问题:打印从1到最大的n位数

    //打印从1到最大的n位数:大数问题,用字符串表示数字来避免溢出 bool increment(char* number){ bool isOverFlow = false; int nTakeOve ...

  8. 剑指 Offer 17. 打印从1到最大的n位数

    剑指 Offer 17. 打印从1到最大的n位数 Offer 17 题目解析: 暴力解法 package com.walegarrett.offer; /** * @Author WaleGarret ...

  9. 力扣 - 剑指 Offer 17. 打印从1到最大的n位数

    题目 剑指 Offer 17. 打印从1到最大的n位数 思路1 如果有n位,那么最大值就是\(10^n-1\),即如果n是2,那么最大就到输出到99 考虑到大数情况,所以使用字符数组 还要把字符数组转 ...

随机推荐

  1. Python3-multiprocessing模块-多进程

    Python3中的multiprocessing模块是一个与threading模块类似,提供生成进程的API 多进程multiprocessing模块允许程序员充分利用给定机器上的多个CPU(处理器) ...

  2. 测试同学动手搭个简易web开发项目

    技术栈 node.js, vue.js, axios, python, django, orm, restful api, djangorestframework, mysql, nginx, jen ...

  3. Python 简明教程 --- 20,Python 类中的属性与方法

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 与客户保持良好的关系可以使生产率加倍. -- Larry Bernstain 目录 类中的变量称为属 ...

  4. The main method caused an error: java.util.concurrent.ExecutionException: org.apache.flink.runtime.client.JobSubmissionException: Failed to submit JobGraph.

    在使用flink run命令提交任务可能会遇到如下错误: The program finished with the following exception: org.apache.flink.cli ...

  5. [SCOI2016]背单词 题解

    背单词 https://www.luogu.com.cn/problem/P3294 前言: Trie树的省选题(瑟瑟发抖QAQ) 问题汇总:(请忽略) (1)对Trie字典树的运用不熟练 (2)没想 ...

  6. Python内置函数和内置常量

    Python内置函数 1.abs(x) 返回一个数的绝对值.实参可以是整数或浮点数.如果实参是一个复数,返回它的模. 2.all(iterable) 如果 iterable 的所有元素为真(或迭代器为 ...

  7. 【vue】---- ElementUI 实现上传Excel

    1.功能描述:vue 项目使用 el-upload 实现上传 Excel. 2.功能效果:在el-upload基础上做了样式整改. 3.功能实现: // el-upload 上传组件 <temp ...

  8. 如何在Mac中配置Python虚拟环境,踩了好多坑

    如何在Mac中配置Python虚拟环境 1.安装virtualenv pip3 install virtualenv 2.安装virtualenvwrapper pip3 install virtua ...

  9. 基于C#实现DXF文件读取显示

    工控领域的制图软件仍然以AutoCAD为主,很多时候我们希望上位机软件可以读取CAD的图纸文件,从而控制设备按照绘制的路线进行运行,今天给大家分享的是如何使用C#读取DXF文件并进行显示. 公众号:[ ...

  10. Netty 源码解析(四): Netty 的 ChannelPipeline

    今天是猿灯塔“365篇原创计划”第四篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源码解析(二): Netty 的 Channel Netty ...