43 贪心算法 -第K个排列

news/2024/12/22 20:15:42/

题 目 描 述

n  个 字 共 有 n ! 种 排 列 。

给 定 参 数 n , 从 1 到 n 会 有 n 个 整 数 : 123

按 大 小 顺 升 序 列 出 所 有 排 列 的 情 况 ,

并 己 当 n = 3 时 ,

所 有 排 列 如 下 : “ 123 ” “ 132 ” “ 213 ” “ 231 ” “ 312 , “ 321 ”

给 定 n 和 k , 返 回 第 k 价 葬 列 。

输 入 描 述 ,

第 一 行 为 n ,

第 二 行 为 k , 给 定 n 的 范 围 是 [ 1 , 9 ] 给 定 k 的 范 围 是 [ 1 ,n 刂 。

输 出 描 述

输 出 排 在 k 位 首 的 数 字 。

import java.util.Arrays;
import java.util.Scanner;public class Main {static int[] fact;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();fact = new int[n + 1];fact[1] = 1;for (int i = 2; i <= n; i++) {fact[i] = fact[i - 1] * i;}int[] arr = new int[n];for (int i = 0; i < n; i++) arr[i] = i + 1;System.out.println(getNK(n, k, arr));}public static String getNK(int n, int k, int[] arr) {if (n == 1) return "1";int f = fact[n - 1];int prefix = arr[(k - 1) / f];k %= f;k = k == 0 ? f : k;arr = Arrays.stream(arr).filter(ele -> ele != prefix).toArray();if (k == 1) {StringBuilder sb = new StringBuilder();for (int v : arr) sb.append(v);return prefix + sb.toString();} else {return prefix + getNK(n - 1, k, arr);}}
}


http://www.ppmy.cn/news/1272316.html

相关文章

Spring容器中scope为prototype类型Bean的回收机制

文章目录 一、背景二、AutowireCapableBeanFactory 方法 autowireBean 分析三、Spring 容器中 scope 为 prototype 类型 Bean 的回收机制四、总结 一、背景 最近做 DDD 实践时&#xff0c;遇到业务对象需要交给 Spring 管理才能做一些职责内事情。假设账号注册邮箱应用层代码流…

C++之io学习

01.C类型转换(了解) 静态转换&#xff1a; 用于类层次结构中基类&#xff08;父类&#xff09;和派生类&#xff08;子类&#xff09;之间指针或引用的转换 用于基本数据类型之间的转换&#xff0c;如把int转换成char&#xff0c;把char转换成int。这种转换的安全性也要开发…

什么是Composer的自动加载?

Composer的自动加载&#xff08;Composer autoloading&#xff09;是Composer工具的一个重要功能&#xff0c;用于自动加载PHP类和文件&#xff0c;以简化PHP应用程序的依赖管理和代码组织。自动加载允许您按需加载类&#xff0c;而无需手动包含文件或编写大量的require或inclu…

【ArcGIS Pro微课1000例】0055:Pro中如何处理个人数据库(.mdb)

文章目录 原因分析解决方案使用ArcGIS Pro的用户应该已经发现个人地理数据库(.mdb)不能使用了。随着ESRI的软件技术革新,在ArcGIS Pro中不再支持且将来也不会支持个人地理数据库(.mdb)。这个确实很烦人,很多项目还是在使用mdb数据库的。不过ESRI也给出了一些解决办法,不…

应用程序映射的 5 个安全优势

现代企业依靠无数的软件应用程序来执行日常运营。这些应用程序相互连接并协同工作以提供所需的服务。了解这些应用程序如何相互交互以及底层基础设施对于任何组织都至关重要。这就是应用程序映射概念的用武之地。 顾名思义&#xff0c;应用程序映射是创建应用程序架构&#xf…

flutter学习-day12-可滚动组件和监听

&#x1f4da; 目录 简介可滚动组件 SingleChildScrollViewListView separated分割线无限加载列表带标题列表 滚动监听和控制 ScrollController滚动监听NotificationListener滚动监听 AnimatedList动画列表滚动网格布局GridView 横轴子元素为固定数量横轴子元素为固定最大长度…

计算机网络 第四章(网络层)【上】

参考教程&#xff1a;4.1 网络层概述_哔哩哔哩_bilibili 一、网络层概述 1、网络层的任务 &#xff08;1&#xff09;网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 &#xff08;2&#xff09;如下图所示&#xff0c;这些异构型网络如果只…

云原生之深入解析使用Telepresence轻松在本地调试和开发Kubernetes应用程序

一、 准备 telepresence 下载&#xff1a;https://www.telepresence.io/docs/latest/install/kubectl 下载&#xff1a;https://kubernetes.io/docs/tasks/tools/ 二、版本检测 $telepresence version Client: v2.5.3 (api v3) Root Daemon: not running User Daemon: not r…