【done】【重点】【回溯】【大数】剑指 Offer17:打印从1到最大的n位数

news/2024/6/23 19:16:58

力扣
力扣中描述简单了,本质是考察大数算法。

1.大数 + 全排列

class Solution {public int[] countNumbers(int cnt) {char[] numArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};StringBuffer tmp = new StringBuffer();List<String> res = new ArrayList<>();for (int len = 1; len <= cnt; ++len) {dfs(0, len, numArray, res, tmp); // 获取长度为len的所有整数}int[] resArray = new int[res.size()];for (int i = 0; i < res.size(); ++i) {resArray[i] = Integer.parseInt(res.get(i));}return resArray;}public void dfs(int startIndex, int length, char[] numArray, List<String> res, StringBuffer tmp) {if (startIndex == length) {res.add(tmp.toString());return;}int val = startIndex == 0 ? 1 : 0;for (int k = val; k < 10; ++k) {tmp.append(numArray[k]);dfs(startIndex + 1, length, numArray, res, tmp);tmp.deleteCharAt(startIndex);}}
}

2.暴力遍历

// 版本1
class Solution {public int[] countNumbers(int cnt) {int end = (int)Math.pow(10, cnt) - 1;int[] res = new int[end];for(int i = 0; i < end; i++)res[i] = i + 1;return res;}
}// 版本2
class Solution {public int[] countNumbers(int cnt) {List<Integer> res = new ArrayList<>();long max = pow(10, cnt) - 1;for (int i = 1; i <= max; ++i) {res.add(i);}int[] array = new int[res.size()];for (int i = 0; i < res.size(); ++i) {array[i] = res.get(i);}return array;}public long pow(int x, int n) {long res = 1;while (n > 0) {res *= x;--n;}return res;}
}

https://www.xjx100.cn/news/3118815.html

相关文章

Windows 系统配置 GraalVM 的 native-image 环境

由于 GraalVM 和相关组件会更新变化&#xff0c;所以文章内容的有效性会受影响。 1. 下载 GraalVM 打开官网 https://www.graalvm.org/ 点击 Download 下载。 在当前时间&#xff08;2023-11-29&#xff09;我下载的版本为: graalvm-jdk-21_windows-x64_bin.zip 解压 GraalVM…

PHP调用API接口的方法及实现(一键采集淘宝商品详情数据)

随着互联网、云计算和大数据时代的到来&#xff0c;越来越多的应用程序需要调用第三方的API接口来获取数据&#xff0c;实现数据互通和协同工作。PHP作为一种常用的服务器端语言&#xff0c;也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用API接口的方…

【开源视频联动物联网平台】开箱即用的物联网项目介绍

写一个开箱即用的物联网项目捐献给Dromara组织 一、平台简介 MzMedia开源视频联动物联网平台&#xff0c;简单易用&#xff0c;更适合中小企业和个人学习使用。适用于智能家居、农业监测、水利监测、工业控制&#xff0c;车联网&#xff0c;监控直播&#xff0c;慢直播等场景。…

工业物联网数据传输方式探究

文章目录 引言Modbus RTU&#xff1a;传统数据采集的基础Modbus TCP&#xff1a;现代工业物联网的关键演进与影响 结语 引言 工业物联网的发展为工业数据采集带来了巨大的变革。从最初的 Modbus RTU 到现在广泛应用的 Modbus TCP&#xff0c;数据采集方式的演进使得工业领域的…

docker搭建node环境开发服务器

docker搭建node环境开发服务器 本文章是我自己搭建node环境开发服务器的过程记录&#xff0c;不一定完全适用所有人。根据个人情况&#xff0c;按需取用。 命名项目路径 为了方便cd到项目路径&#xff0c;将项目路径重命名&#xff0c;方便输入。 vim /etc/profile # 修改p…

NX二次开发UF_CURVE_create_joined_curve 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_joined_curve Defined in: uf_curve.h int UF_CURVE_create_joined_curve(uf_list_p_t uf_curve_list, int creation_method, tag_t * joined_curve, int * status …

Redis使用管道实现批量处理

管道&#xff08;Pipeline&#xff09; 使用管道可以将多个命令打包在一起发送到服务器&#xff0c;减少网络往返的开销&#xff0c;从而实现批量操作。管道可以通过 Redis 客户端提供的 pipeline() 方法创建&#xff0c;并通过 execute() 方法执行。 优点 减少网络往返次数…

Windows如何启动MySQL

手动启动MySQL服务 如果您选择手动启动MySQL服务&#xff0c;则需要在“服务”控制面板中手动启动MySQL服务。步骤如下&#xff1a; 1&#xff09;按下WinR键打开运行窗口&#xff0c;输入services.msc并回车。 2&#xff09;在服务管理器中&#xff0c;搜索MySQL服务&#…