c_cpp面试题17:打印从1到最大的Ñ位数(代码片段)

author author     2023-01-09     403

关键词:

#include <iostream>

using namespace std;

bool Increment(char* number);
void PrintNumber(char* number);

void Print1ToMaxOfNDigits(int n) 
	if (n <= 0)
		return;

	char* number = new char[n + 1];
	memset(number, '0', n);
	number[n] = '\0';

	while (!Increment(number)) 
		PrintNumber(number);
	



//通过进位来判断是否到了最大的n位数
bool Increment(char* number) 
	bool isOverflow = false;
	int nTakeOver = 0;
	int nLength = strlen(number);

	for (int i = nLength - 1; i >= 0; i--) 
		int nSum = number[i] - '0' + nTakeOver;
		if (i == nLength - 1)
			nSum++;
		if (nSum >= 10) 
			if (i == 0)
				isOverflow = true;
			else 
				nSum -= 10;
				nTakeOver = 1;
				number[i] = '0' + nSum;
			

		
		else 
			number[i] = '0' + nSum;
			break;
		
	

	return isOverflow;


//打印输出
void PrintNumber(char* number) 
	bool  isBeginning0 = true;
	int nLength = strlen(number);

	for (int i = 0; i < nLength; ++i) 
		if (isBeginning0 && number[i] != '0') 
			isBeginning0 = false;
		
		if (!isBeginning0)
			printf("%c", number[i]);

	
	printf("\t");



int main() 

	Print1ToMaxOfNDigits(3);

	getchar();
	return 0;
#include <iostream>

using namespace std;

void PrintNumber(char* number);
void Print1ToMaxOfNDigitsRecursively(char* number, int length, int index);

void Print1ToMaxOfNDigits(int n) 
	if (n <= 0)
		return;

	char* number = new char[n + 1];
	number[n] = '\0';

	for (int i = 0; i < 10; ++i) 
		number[0] = i + '0';
		Print1ToMaxOfNDigitsRecursively(number, n, 0);
	

	delete[] number;


void Print1ToMaxOfNDigitsRecursively(char* number, int length, int index) 
	if (index == length - 1) 
		PrintNumber(number);
		return;
	

	for (int i = 0; i < 10; ++i) 
		number[index + 1] = i + '0';
		Print1ToMaxOfNDigitsRecursively(number, length, index + 1);
	




//打印输出
void PrintNumber(char* number) 
	bool  isBeginning0 = true;
	int nLength = strlen(number);

	for (int i = 0; i < nLength; ++i) 
		if (isBeginning0 && number[i] != '0') 
			isBeginning0 = false;
		
		if (!isBeginning0)
			printf("%c", number[i]);

	
	printf("\t");



int main() 

	Print1ToMaxOfNDigits(3);

	getchar();
	return 0;

剑指offer——面试题17:打印从1到最大的n位数(代码片段)

用字符串模拟加法:1#include"iostream"2#include"string.h"3usingnamespacestd;45boolAddOne(char*number,intn);6voidPrintNumber(char*number,intn);78voidPrint1ToN(intn)910if(n<=0)11return;12char*number=newchar[n+1];13memset(number,‘0‘,n);14number[n]=‘ 查看详情

面试题17:打印1到最大的n位数

//面试题17:打印1到最大的n位数//题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则//打印出1、2、3一直到最大的3位数即999。解题思路:首先是一个大陷阱,n有多大?万一大到longlong类型都盛不下,你要直接... 查看详情

剑指offer17.打印从1到最大的n位数(代码片段)

剑指Offer17.打印从1到最大的n位数输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。示例1:输入:n=1输出:[1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印nnn为... 查看详情

乱序版●剑指offer每日算法题打卡题解——分治算法(题号17,14)(代码片段)

...卡day24,今天完结啦。。目录第一题:剑指Offer17.打印从1到最大的n位数第二题:剑指Offer14-II.剪绳子II第一题:剑指Offer17.打印从1到最大的n位数输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3ÿ... 查看详情

剑指offer17.打印从1到最大的n位数的详细题解(代码片段)

剑指Offer17.打印从1到最大的n位数题目输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。示例1:输入:n=1输出:[1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印... 查看详情

算法剑指offer17.打印从1到最大的n位数(代码片段)

1.概述输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。示例1:输入:n=1输出:[1,2,3,4,5, 查看详情

⭐算法入门⭐《线性枚举》简单10——leetcode剑指offer17.打印从1到最大的n位数(代码片段)

...群须知一、题目1、题目描述  输入数字nnn,按顺序打印出从111到最大的nnn位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。  样例输入:n=1  样例输出:[1,2,3,4,5,6,7,8 查看详情

leetcode——剑指offer17打印从1到最大的n位数(代码片段)

目录题目解题思路代码详解题目剑指Offer17.打印从1到最大的n位数题目概述:输入数字 n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。示例:输入:n=1输出:[1,2,3,4,5,... 查看详情

leetcode剑指offer17.打印从1到最大的n位数(c++)(代码片段)

剑指Offer17.打印从1到最大的n位数1题目描述2示例描述2.1示例13解题提示4解题思路5代码详解1题目描述输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。2示例描述2.1示例... 查看详情

剑指offer17.打印从1到最大的n位数(代码片段)

代码思路:1.最大n位数end位数n之间的关系1最大的位数是9,2最大的位数是99,3最大的位数是999end=10的n次方-1;2.大数越界问题:当n较大时,end会超出int32整型的取值范围,超出范围无法正常存储,但... 查看详情

面试题17.19.消失的两个数字:简单数学运用题

​题目描述这是LeetCode上的面试题17.19.消失的两个数字,难度为困难。Tag:「数学」给定一个数组,包含从​​1​​​到​​N​​​所有的整数,但其中缺了两个数字。你能在时间内只用以任意顺序返回这两个数字均可。示例1:... 查看详情

剑指offer17.打印从1到最大的n位数(java解题)(代码片段)

leetcode《图解数据结构》剑指Offer17.打印从1到最大的n位数(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。目录1.题目2.解题思路3.数据类型功能函数总结4.java代码1.题目输入数字n,按顺序打印出从1到最... 查看详情

《剑指offer》第十七题:打印1到最大的n位数(代码片段)

//面试题17:打印1到最大的n位数//题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则//打印出1、2、3一直到最大的3位数即999。#include<cstdio>#include<memory>voidPrintNumber(char*number);boolIncrement(char*number);voidPrin... 查看详情

leetcode刷题offer17-简单-打印从1到最大的n位数(代码片段)

文章目录☀️前言☀️🙀作者简介🙀💗一、题目描述💗💁二、题目解析💁🏃三、代码🏃☁️1️⃣.python☁️❄️2️⃣.C#❄️🌔结语🌔☀️前言☀️算法作为极其重要的一点,是大... 查看详情

leetcode刷题offer17-简单-打印从1到最大的n位数(代码片段)

文章目录☀️前言☀️🙀作者简介🙀💗一、题目描述💗💁二、题目解析💁🏃三、代码🏃☁️1️⃣.python☁️❄️2️⃣.C#❄️🌔结语🌔☀️前言☀️算法作为极其重要的一点,是大... 查看详情

用go剑指offer17.打印从1到最大的n位数(代码片段)

输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。示例1:输入:n=1输出:[1,2,3,4,5,6,7,8,9] 说明:用返回一个整数列表来代替打印n为正整数通过次数251,223提交次数323,027来源:... 查看详情

算法题:打印1到最大的n位数

...,题目例如以下:    输入数字n。按顺序打印出从1到最大的n位十位数。比方输入3,则打印出1,2,3,...,999。    当我看到这个题目的时候。第一感觉就是用递归,为什么呢?首先得 查看详情

[hdp]lc面试题17.24.最大子矩阵(前缀和+列压缩+最大子阵和+面试常考)(代码片段)

文章目录1.题目来源2.题目解析1.题目来源链接:1074.元素和为目标值的子矩阵数量相关题目:前置[Edp]lc53.最大子序和(dp+分治+算法优化+详细分析)进阶[H前缀和]lc1074.元素和为目标值的子矩阵数量(前缀和+哈希优... 查看详情