打印从1到n位数的最大值
题目:
输入数字n,按顺序打印从1到最大的n位十进制数,如输入3,则打印从1、2、3一直到最大的3位数999
参考大数运算的方法。考虑到位数会很大,所以采用字符串的形式解决。对输入的n,创建一个长度为n的数组,分别存放打印时数字的每一位,高位用0补足。为方便使用字符串打印结果,所以数组中存的都是字符型式的0-9
解法:
def print_one_max_number(n):
if n <= 0:
return False
number = ['0' for x in range(n)]
for i in range(n): # 打印1位数到n位数(i表示的位数为i+1,i=0表示位数为1,i=1表示位数为2...)
func(number, n, i)
# 此函数依次改变位数上的值来打印这个数
def func(number, n, i):
if not i: # 如果位数是1(i=0),直接改变个位数
for j in range(10):
number[n - i - 1] = str(j)
print_number(n, number)
return
for j in range(1, 10): # 当位数大于1 时,依次确定从高位向低位的值。
number[n - i - 1] = str(j)
func(number, n, i - 1)
# 打印number数组中存放的具体数值
def print_number(n, number):
for i in range(n):
if number[i] != '0':
print(''.join(number[i:]))
return
# 测试:
print_one_max_number(3)
打印从1到n位数的最大值的更多相关文章
- 剑指Offer10 打印1到最大n位数
/************************************************************************* > File Name: 10_PrintT ...
- 使用sprintf打印float并控制小数位数时引起的问题
最近在做项目中发现一个Bug,直接把进程搞死,查了一下,居然是一个最不起眼的地方导致的,在此记录一下. 先看下面代码 #include <iostream> #include <st ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...
- 剑指Offer:打印从1到最大的n位数
题目:输入数值n,按顺序打印从1到最大的n位数,例如输入n=3,则从1,2,3,一直打印到999 陷阱:若使用循环遍历 1- 999...9 并依次输出,当位数n过大时,无论将其存入int或long或 ...
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
题目:打印1到最大的n位数 输入数字n,按顺序打印输出从1到最大的n位十进制数,比如输入3,打印从1到999. 这道题考察的地方是如何表示大数问题.由于n是任意大的数组,如果n太大的话n位数就超过了l ...
- 每天一道算法题(15)——打印1到最大的n位数
题目: 打印1到最大的n位数.如n=4,打印1-9999. 思路: 由于直接使用循环会导致int或者long long都不够存储.因此使用字符串来存储数据,这里涉及到数字转换成字符串以及字符串的加法. ...
- 【剑指offer】打印1到最大的n位数
题目描写叙述: 输入数字n,按顺序打印出从1到最大的n位十进制数.比方输入3,则打印出1.2.3一直到最大的3位数即999. 分析描写叙述: 首先想到的是先计算出最大的n位数是多少,然后用一个循环从1 ...
- 面试题十七:打印从1到最大的n位数
输入数字n,按顺序打印到最大的n位数 注意:没有规定类型,无论int或long 都会有可能溢出. 应当选择其他类型如String 方法一:定义长度与位数相同的字符数组,从0开始进行加一操作打印 pub ...
- 剑指offer——滑动窗口的最大值
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6, ...
随机推荐
- Docker原理及使用
虚拟化系统: 1. Type-I: 此种虚拟化是Hypervisor直接运行在硬件之上,来创建虚拟机. 2. Type-II: 这种虚拟化类似与VMware Workstations. IPC: 在相 ...
- jmeter(四十五)常用Beanshell脚本
整理了一批jmeter常用的beanshell脚本供大家参考! 时间戳 import java.text.SimpleDateFormat; import java.util.Calendar; im ...
- Segment fault 常见原因
[https://blog.csdn.net/qq_22238021/article/details/79872978] 本质原因在于:程序访问了非法的地址 1.引用空指针 2.野指针 3.访问越界 ...
- 【Beta】Scrum meeting 8 & 助教参会记录
目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 助教参会会议情况 会议具体内容 Q:最近压力大吗?临近期末,注意好时间安排 Q:最近进度如何,以后的计划如何 Q:这段时间遇到 ...
- leetcode:146. LRU缓存机制
题目描述: 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果密钥 ( ...
- java.lang.IllegalArgumentException: host parameter is null
即 URL 应为 http://www.baidu.com 但是实际配置成了 www.baidu.com 所以出现此错误
- 范仁义html+css课程---9、video、audio、canvas和svg元素略讲
范仁义html+css课程---9.video.audio.canvas和svg元素略讲 一.总结 一句话总结: video:HTML5视频标签. audio:html5音频标签. canvas:绘制 ...
- java wait方法
wait方法是让当前线程等待,这里的当前线程不是指t,而是主线程. wait会释放锁,等到其他线程调用notify方法时再继续运行. 可以看下面的例子. 1 package com.citi.test ...
- css3中的盒子模型
1.示例一 实现左右布局,左侧宽度200px,右侧自适配 代码如下: <!DOCTYPE html> <html lang="en"> <head&g ...
- Nodejs 包与 npm第三方模块安装和 package.json 以及 cnpm
包与 NPM 1. 包 Nodejs 中除了它自己提供的核心模块外,可以自定义模块,也可以使用第三方的模块.Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依 赖关系的模块进行统一管理. ...