当前位置:网站首页>剑指 Offer 17. 打印从1到最大的n位数(大数问题)
剑指 Offer 17. 打印从1到最大的n位数(大数问题)
2022-07-21 14:49:00 【[email protected]】
https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/
这道题目本质上是来考虑大数溢出问题的,比如当n比较大时,比如100,此时没有哪种类型可以保存100位的数值类型,因此只能用字符串进行处理,但考虑本题的返回值限制,因此还是使用int []数组返回,在实际应用中应该返回String[]
假设当前数字有len位,第一位不能为0,单独处理,后面len-1位相当于就是一个0-9的排列组合,可以使用递归+回溯的方法实现
ps: 如果是打印0-n的数字,也比较简单,在打印1-n的结果基础上在前面加上一个0即可
class Solution {
int[] ans;
int count=0;
public int[] printNumbers(int n) {
int cnt=(int)Math.pow(10,n)-1;
ans=new int[cnt];
for(int len=1;len<=n;len++){
for(char ch='1';ch<='9';ch++){
char[] num=new char[len];
num[0]=ch;
dfs(num,1,len);
}
}
return ans;
}
public void dfs(char[] num,int index,int len){
if(index==len){
ans[count++]=Integer.parseInt(String.valueOf(num));
return;
}
for(char ch='0';ch<='9';ch++){
num[index]=ch;
dfs(num,index+1,len);
}
}
}
//O(10^n)
//O(10^n)
class Solution {
public:
vector<int> ans;
int count=0;
vector<int> printNumbers(int n) {
int cnt=(int)pow(10,n)-1;
ans.resize(cnt);
for(int len=1;len<=n;len++){
for(char ch='1';ch<='9';ch++){
string s(len,'0');
s[0]=ch;
dfs(s,1,len);
}
}
return ans;
}
void dfs(string &s,int index,int len){
if(index==len){
ans[count++]=stoi(s);
return;
}
for(char ch='0';ch<='9';ch++){
s[index]=ch;
dfs(s,index+1,len);
}
}
};
class Solution:
def __init__(self):
self.ans = []
def printNumbers(self, n: int) -> List[int]:
num=['0']*n
for len in range(1,n+1):
for i in range (1,10):
num[0]=str(i)
self.dfs(num,1,len)
return self.ans
def dfs(self,num,index,len):
if index==len:
s=''.join(num[0:len])
self.ans.append(int(s,10))
return
for i in range (0,10):
num[index]=str(i)
self.dfs(num,index+1,len)
版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_43478694/article/details/125904714
边栏推荐
- Preparation method of polyether / polyacrylamide monomethyl / Polyacrylamide / granular poly (N-isopropylacrylamide) chitosan hydrogel
- Using jsonwebtoken to realize JWT authentication in node project
- void 0 有什么意义?undefined竟然是可变的?
- 直播回顾| Apache Pulsar Meetup 精彩回放(含 PPT 下载)
- elastic要怎么通过对字段的值进行截取来分组?
- Use of Seaborn
- 封装微信支付宝脱敏
- 运营商AI机遇:以大模型拓展全新赛道
- 15秒带货120W,这样的爆款视频你也能拍
- 2022-07-21日报:吴恩达撰文:如何建立适应AI职业生涯的项目
猜你喜欢
IP地址分类及范围
Preparation of chitosan / dextran / nano hydroxyapatite composite hydrogel / fish gelatin galactose chitosan hydrogel liver scaffold
OSPF experimental demonstration (Huawei router device configuration)
U++ UPROPERTY UFUNCTION 基础
Episode 2 best B tutorial of VMware virtual machine installation (13 days)
PLC串级PID控制详解(炉膛和中央空调系统控温)
Idea setup and environment variables
Leetcode skimming: balanced binary tree and flipped binary tree
DOM系列之事件对象
rider 切换主题
随机推荐
3D coordinate system of 3D conversion, perspective rotation and other basic knowledge
Gaussian membership function instruction of PLC Fuzzy Control Series
Keithley software 2400 | 2401 | 2410 | 2420 | 2425 | 2430 ns SourceMeter source table software
封装微信支付宝脱敏
Seaborn的使用
Fluent future asynchronous processing
win10 最新版更改语言之间切换快捷键
Structure of web pages
软件测试简历部分应该注意什么?
Horizontal layout, vertical layout, shadows and fillets
Idea shortcut key (day 16)
Episode 3 best B tutorial of VMware virtual machine installation (14 days)
吉时利Keithley软件2600系列2611B|2612B|2614B|2634B NS-SourceMeter源表软件
西农大 C plus
office 2013 自定义样式,并且将样式设置为目录
.net 温故知新:【6】Linq是什么
IP地址分类及范围
吉时利Keithley软件2600系列2635B|2636B|2651A|2657A NS-SourceMeter源表软件
Set the background color, background range, Sprite chart, gradient, radial gradient, etc
固收类的理财产品收益是确定的吗?