剑指offer系列之11:打印1到最大的n位数
来源:互联网 发布:放置江湖轻功数据 编辑:程序博客网 时间:2024/06/14 03:40
题目描述:输入数字n,按顺序打印出从1到最大的n为十进制数,比如输入3,则从1一直打印输出到999.
思路1:该题最大的陷阱是没有规定n的范围,所以我么需要考虑大数问题,可以咋字符串上模拟数字的加法。函数increment使数字每次加1然后输出,函数output输出数字将高位的0舍掉。
package dsproblem;import java.util.ArrayList;import java.util.Iterator;public class Print1ToMaxOfNDigits { public static void outPutOneToMaxNDigits(int n) { // 用nlist表示数n,nlist[0]表示n的最低位 ArrayList<Integer> nlist = new ArrayList<Integer>(); for (int i = 0; i < n; i++) { nlist.add(0); } increment(nlist); } // 使数字每次+1然后输出 public static void increment(ArrayList<Integer> nlist) { int carrybit = 0; boolean end = false; while (true) { for (int i = nlist.size() - 1; i >= 0; i--) { int digit = nlist.get(i); int sum = digit + carrybit; if (i == (nlist.size() - 1)) { sum += 1; } if (sum >= 10) { // 最高位产生进位,达到最大值,停止输出 if (i == 0) { end = true; } sum = sum - 10; carrybit = 1; } else { carrybit = 0; } nlist.set(i, sum); } output(nlist); if (end) { break; } } } // 输出数字,将高位的0舍掉 public static void output(ArrayList<Integer> nlist) { Iterator<Integer> ite = nlist.iterator(); int num; // 找到第一个为0的位置 boolean first = false; while (ite.hasNext()) { if (first) { System.out.print(ite.next()); continue; } if ((num = ite.next()) != 0) { first = true; System.out.print(num); } } System.out.println(); }}
思路2:把问题转化为数字全排列的问题,使用递归能够使代码更加简洁。
0 0
- 剑指offer系列之11:打印1到最大的n位数
- 剑指Offer之打印1到最大的N位数
- 剑指Offer之打印1到最大的n位数
- 剑指Offer之 - 打印1到最大的n位数
- 剑指offer之打印1到最大的n位数
- 剑指offer:打印1到最大的n位数
- 【剑指offer】打印1到最大的n位数
- [剑指Offer]打印1到最大的n位数
- 【剑指offer】打印1到最大的n位数
- 剑指offer-12 打印1到最大的N位数
- 剑指offer 12 -打印1到最大的n位数
- 剑指offer:打印1到最大的n位数
- 剑指Offer-12-打印1到最大的n位数
- [剑指offer-1515]打印1到最大的N位数
- 剑指offer 打印1到最大的N位数
- 剑指Offer--012-打印1到最大的N位数
- 剑指Offer 打印1到最大的n位数
- 剑指Offer:打印1到最大的N位数
- 设计模式六大原则(2):里氏替换原则
- C# 关闭程序
- 通过简单的实例对指针的理解
- JDK源码阅读——ArrayList(2)
- IntelliJ IDEA 12 创建Web项目 教程 超详细版
- 剑指offer系列之11:打印1到最大的n位数
- Java String和Date的转换
- Math取整方法
- JNI学习积累之一 ---- 常用函数大全
- Android数据库高手秘籍(二):创建表和LitePal的基本用法
- 过程神经元网络
- 三、s3c2440 裸机 系统时钟和定时器的设置
- iOS开发 滤镜效果
- PHP PSR-1 基本代码规范(中文版)