打印1到最大的n位数:比较简单了,但是考虑n 很大的时候n位的最大999…9可能会超出表示范围
大数问题-需要使用字符串或者数组模拟大数加法

public class _Q12 {public void PrintFromOneToMaxN(int n){if(n <= 0) return ;char digit[] = new char[n];for(int i=0; i<digit.length; i++) digit[i] = '0';while(!Increment(digit)){PrintNumber(digit);}}char base[] = {'0','1','2','3','4','5','6','7','8','9'};private boolean Increment(char digit[]){boolean isOverfolw = false;int carry = 0;int sum = 0;for(int i=(digit.length-1); i>=0; --i){if(i == digit.length-1) { sum++;}sum = sum + (digit[i] - '0') + carry;if(sum >= 10){ // 由于此处仅仅是每次增加1,所以sum只能是10if(i == 0) { isOverfolw = true; break;}digit[i] = base[sum % 10]; // 此处实际也就是'0'carry = sum / 10;sum = 0;}else{digit[i] = base[sum % 10];break; // 某一位不会发生进位之后,其前面的更高位也不会发生进位}}return isOverfolw;}private void PrintNumber(char digit[]) {int start = 0;// 寻找第一个非0起点for (int i = 0; i < digit.length; i++) {if (digit[i] == '0') { continue; } else { start = i; break; }}for (int i = start; i < digit.length; i++) {System.out.print(digit[i]);}System.out.println();}
}

测试代码:

public class _Q12Test extends TestCase {_Q12 oneToN = new _Q12();public void test(){oneToN.PrintFromOneToMaxN(3);}}

【剑指offer-Java版】12打印1到最大的n位数相关推荐

  1. 剑指offer面试题[12]-打印1到最大的n位数

    题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例. 对于每个测试案例,输入一个数字N(1<=N<=5). 输出: 对应每个测试案例,依次打印从1 ...

  2. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  3. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  4. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  5. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  6. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  7. 剑指Offer第二版Java代码实现

    剑指Offer第二版Java代码实现 A.单例模式 面试题 2:实现Singleton模式 B.面试需要的基础知识 面试题 3:数组中重复的数字 面试题 4:二维数组的查找 面试题 5:替换空格 面试 ...

  8. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

  9. 剑指offer最新版_剑指Offer——Java版本(持续更新)

    0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...

  10. 剑指offer第二版(leetcode)Java题解(不断更新)

    1 数组中的重复数字 题目 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一 ...

最新文章

  1. matlab练习程序(Log Polar变换)
  2. Windows消息队列
  3. 关于Taptic Engine震动反馈
  4. IOS UITableView性能优化
  5. python建立空矩阵_SciPy创建稀疏矩阵
  6. Ubuntu和Win7双系统,ubuntu被删,重新启动之后显示,no such partition
  7. 第一章:系统困境之 再努力也不能直接打开的死结
  8. IP协议详解---Linux学习笔记
  9. PrimeFaces 5.0 DataTable列切换器
  10. 378. Kth Smallest Element in a Sorted Matrix
  11. 面试官系统精讲Java源码及大厂真题 - 15 CopyOnWriteArrayList 源码解析和设计思路
  12. 释放Ubuntu/Linux系统cache,增加可用内存空间
  13. HttpClient调用http接口(POST)
  14. Java项目大合集练手项目经验
  15. 随机一个淘宝买家秀网站源码
  16. hdu1013 (Digital Roots)
  17. DevicePolicyManagerService之DeviceOwner和ProfileOwner
  18. kaggle初探--泰坦尼克号生存预测
  19. 「大冰撸设计模式」java 创建型模式之单例模式
  20. JOJ 上的典型题目分类以及参考书目 (以及我的整理)

热门文章

  1. mysql节假日表_节假日常见的数据库磁盘空间处理小结
  2. scrum回顾_沙龙回顾 | 大规模敏捷框架-Essential SAFe介绍
  3. 此任务要求应用程序具有提升的权限
  4. [JDK8] Stream
  5. .net core 微服务通讯组件Orleans的使用与配置
  6. VS2015使用scanf报错解决方案
  7. 虚拟化,可实现国产化替代
  8. c#中在规定时间弹出窗体
  9. FreeBSD下安装配置Hadoop集群(一)
  10. DOS批处理高级教程:第三章 FOR命令中的变量(转)