[剑指offer][JAVA]面试题第[17]题[打印从1到最大的n位整数][大整数][递归回溯]

【问题描述】[中等]

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

【解答思路】

1. 直接打印

在这里插入图片描述
时间复杂度:O(10^N) 空间复杂度:O(1)

  public int[] printNumbers(int n) {int end = (int)Math.pow(10, n) - 1;int[] res = new int[end];for(int i = 0; i < end; i++)res[i] = i + 1;return res;}
2. 大数打印

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时间复杂度:O(N) 空间复杂度:O(1)

class Solution {int[] res;int nine = 0, count = 0, start, n;char[] num, loop = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};public int[] printNumbers(int n) {this.n = n;res = new int[(int)Math.pow(10, n) - 1];num = new char[n];start = n - 1;dfs(0);return res;}void dfs(int x) {if(x == n) {String s = String.valueOf(num).substring(start);// 解决是0的串 0 00 000 0000 if(!s.equals("0")) res[count++] = Integer.parseInt(s);if(n - start == nine) start--;return;}for(char i : loop) {if(i == '9') nine++;num[x] = i;dfs(x + 1);}nine--;}
}

【总结】

1.大数全排列模板
class Solution {StringBuilder res;int count = 0, n;char[] num, loop = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};public String printNumbers(int n) {this.n = n;res = new StringBuilder(); // 数字字符串集num = new char[n]; // 定义长度为 n 的字符列表dfs(0); // 开启全排列递归res.deleteCharAt(res.length() - 1); // 删除最后多余的逗号return res.toString(); // 转化为字符串并返回}void dfs(int x) {if(x == n) { // 终止条件:已固定完所有位res.append(String.valueOf(num) + ","); // 拼接 num 并添加至 res 尾部,使用逗号隔开return;}for(char i : loop) { // 遍历 ‘0‘ - ’9‘num[x] = i; // 固定第 x 位为 idfs(x + 1); // 开启固定第 x + 1 位}}
}
2.全排序一般使用递归处理/回溯法
3.注意回溯时条件要还原

转载链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/solution/mian-shi-ti-17-da-yin-cong-1-dao-zui-da-de-n-wei-2/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html:(40):块级元素和内联块级元素

1.下表列出了内联元素和块级元素的主要区别 html中内联元素和块级元素的区别 块级元素 行内元素 独占一行,默认情况下&#xff0c;其宽度自动填满其父元素宽度 相邻的行内元素会排列在同一行里&#xff0c;直到一行排不下&#xff0c;才会换行&#xff0c;其宽度随元素的内…

Django中提供了6种缓存方式

开发调试内存文件数据库Memcache缓存&#xff08;python-memcached模块&#xff09;Memcache缓存&#xff08;pylibmc模块&#xff09;1. 开发调试 12345678910111213141516171819202122232425262728293031323334353637383940# 此为开始调试用&#xff0c;实际内部不做任何操作…

HDU-6180 Schedule

题意 给n个工作的开始时间和结束时间 每个工作需要用机器来完成 让我们给这n个工作规划机器 规划出尽可能少机器数目 以及计算最少的机器时间(机器时间为机器使用的最终结束时间减去开始时间)分析 这道题其实就是一个工作的开始结束形成了一个线段 让我们求多个线段不交叉不重…

数字图像处理技术的应 用领域

数字图像处理技术的应 用领域 图像处理技术的主要应用领域有&#xff1a; 生物医学、遥感技术、工业生产、军事技术、 通信技术、侦缉破案、气象预报、宇宙探索、考 古等&#xff0c;已经遍布国民经济的各个领域。 发展历史 20世纪20年代&#xff1a;报纸业 Bartlane电缆图…

前端基础3-2——JavaScript

目录内部对象DateJSONAJAX面向对象编程操作BOM对象&#xff08;重点&#xff09;操作DOM对象&#xff08;重点&#xff09;操作表单formjQuery如何巩固前端基础内部对象 标准对象 Date 基本使用 转换 JSON JSON是什么 在javascript中&#xff0c;一切皆为对象&#…

ltp makefile 解析

困惑于 /include/mk/automake.mk中出现了第一个目标 而makefile却任然将all当做最终目标 测试了一番后发觉&#xff1a; ifeq ($(MAKE_3_80_COMPAT),1)# Trick make 3.80 into thinking that the default goal is all..PHONY: defaultdefault: allelse #pick this.DEFAULT_GOA…

数字图像处理(拓展)

1&#xff0e;数字图像处理及特点 数字图像处理又称为计算机图像处理&#xff0c;它是指将图像信号转换成数字信号并利用计算机 对其进行处理的过程&#xff0c;以提高图像的实用性&#xff0c;从而达到人们所要求的预期结果。 数字图像处 理还有以下特点&#xff1a; ① 处理…

HDU-5532Almost Sorted Array LIS问题

题意 就是检查这个序列是否删除一个元素就能变成非严格的有序序列 表面上就是一个卡条件检查数组的问题 分析&#xff1a; 在向量中upperbound插入上界 这样能够使数组里的数列长度尽可能大 因为 我们是在不断用小数替换数列中的数 大的数直接拼接到最后 code #include…

文件和结构体

LITTLESUN本来是在学队列啊&#xff0c;在手动模拟队列的地方发现了结构体这个小怪&#xff0c;为了能赶紧打队列大BOSS就赶紧跑过来填下文件和结构体的坑鸭&#xff01; 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10435877.html

电磁波谱与可见光谱

电磁波谱与可见光谱 电磁辐射波 在实际的图像处理应用中&#xff0c;最主要的图像来源于电磁 辐射成像。 电磁辐射波包括无线电波、微波、红外线、可见光、 紫外线、X射线、γ射线。 电磁辐射波的波谱范围很广&#xff0c;波长最长的是无线电波 为3102m&#xff0c;其波长是…

[Leedcode][JAVA][第9题][回文数][数学法]

【问题描述】[简单] 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。示例 1:输入: 121 输出: true 示例 2:输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。…

Weak Pair HDU - 5877 树状数组+离散化+DFS遍历

题意 给我们一颗有根有向树 以及每个点得权值a[1]~a[n] 需要我们求出在这颗树种有多少对满足以下两个条件的pair &#xff08;1&#xff09;u是v的祖先节点 &#xff08;2&#xff09;a[u]*a[v]< k N<1e5 a[i]<1e9 k<1e18 分析 由于需要在树中找符合要求的对…

【模板】最新空web.xml模板

<?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://xmlns.jcp.org/xml/ns/javaeehttp://x…

人眼的视觉特性

人眼的视觉特性 视觉系统基本构造 视觉过程 包括&#xff1a;光学过程&#xff1b;化学过程&#xff1b;神经处理过程 光学过程 物体在视网膜上成像 整体视觉过程 亮度适应能力 亮度适应能力 明亮较暗现象&#xff1f; 逐渐能够看清物体暗光适应(20~30s) 较暗明亮现象…

微信小程序测试的策略和注意事项

一、测试前准备&#xff08;环境搭建&#xff09; 1.前端页面 微信Web开发者工具安装、授权测试用的微信号可预览和调试小程序...可参考此文&#xff1a; 微信Web开发者工具-下载、安装和使用图解 2.管理后台 配置内网测试服务器环境&#xff0c;通过PC端Web站点管理小程序前端…

【解决问题】idea启动本地tomcat访问localhost:8080报404错误

把tomcat安装目录下webapp下的的ROOT文件夹配置到idea中 并且将/ROOT修改application context为 /

[Leedcode][第十题][剑指offer]面试题第[19]题[正则表达式][动态规划][递归][JAVA]

【问题描述】[困难] 请实现一个函数用来匹配包含. 和*的正则表达式。模式中的字符.表示任意一个字符&#xff0c;而*表示它前面的字符可以出现任意次&#xff08;含0次&#xff09;。在本题中&#xff0c;匹配是指字符串的所有字符匹配整个模式。例如&#xff0c;字符串"…

图像的采样和量化

图像的采样和量化 图像成像模型 图像的采样和量化 图像数字化 •将代表图像的连续(模拟)信号转换为离散(数字) 信号的过程称为图像数字化 •步骤&#xff1a;采样和量化 •主要技术 成像&#xff1a;光信息&#xff0d;>电信号 模数转换&#xff08;A/DConverter&…

Elegant Construction HDU-5813 构造

- 题意 给出我们从1-n城市的点能直接&#xff08;或间接&#xff09;到达的城市的数量作为这个点的权值 让我们判断并构造一个单向图 使得这个图完全契合给出的数据 special judge 任意一组结果就可以题目中给出 图中无环无回路- 分析 刚看到根据联通数目构造图 哇 这怎么做 好…

【解决问题】IDEA配置Tomcat添加Deployment时没有Artifact

下面这里别忘了把整个项目也拉到左边的output-root&#xff08;拉完之后会有个WEB-INF&#xff09;