43 贪心算法 -第K个排列

题 目 描 述

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.mzph.cn/news/227304.shtml

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

相关文章

升华 RabbitMQ:解锁一致性哈希交换机的奥秘【RabbitMQ 十】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 升华 RabbitMQ&#xff1a;解锁一致性哈希交换机的奥秘【RabbitMQ 十】 前言第一&#xff1a;该插件需求为什么需要一种更智能的消息路由方式&#xff1f;一致性哈希的基本概念&#xff1a; 第二&…

【Linux】MySQL 数据库安装配置教程(Ubuntu 22.04)

前言 MySQL是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于Web应用程序的后端数据存储&#xff0c;如许多动态网站、电子商务系统和在线出版物等。 MySQL具有高性能、可靠性和易用性的特点&#xff0c;它支持大型数据库&#xff0c;…

Web应用安全—信息泄露

从书本和网上了解到Web应用安全的信息泄露的知识&#xff0c;今天跟大家分享点。 robots.txt泄漏敏感信息 漏洞描述&#xff1a;搜索引擎可以通过robots文件可以获知哪些页面可以爬取&#xff0c;哪些页面不可以爬取。Robots协议是网站国际互联网界通行的道德规范&#xff0c;其…

UniGUI之提示信息MessageDlg及获得信息Prompt

UniGui的信息弹出框MessageDlg的原型定义如下&#xff1a; procedure MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; CallBack: TUniDialogCallBackAnonProc); 1. 其中DlgType(对话框架的类型) 1、mtConfirmation 2、mtCustom 3、mtError…

【Java】使用递归的方法获取层级关系数据demo

使用递归来完善各种业务数据的层级关系的获取 引言&#xff1a;在Java开发中&#xff0c;我们通常会遇到层层递进的关系型数据的获取问题&#xff0c;有时是树状解构&#xff0c;或金字塔结构&#xff0c;怎么描述都行&#xff0c;错综复杂的关系在程序中还是可以理清的。 这…

uniGUI之上传文件UniFileUploadButton

TUniFileUploadButton主要属性&#xff1a; Filter: 文件类型过滤&#xff0c;有图片image/* audio/* video/*三种过滤 MaxAllowedSize: 设置文件最大上传尺寸&#xff1b; Message&#xff1a;标题以及消息文本&#xff0c;可翻译成中文 TUniFileUploadButton控件 支持多…

K8S(八)—有、无状态.md

目录 无状态有状态&#xff08;StatefulSet&#xff09;介绍应用应用21. **状态持久性&#xff1a;**2. **水平扩展&#xff1a;**3. **存储和卷&#xff1a;**4. **Pod标识和网络标识&#xff1a;**5. **部署和更新&#xff1a;** 有状态和无状态对比1. 概念&#xff1a;2. 数…

【OpenCV】实时屏幕捕获

文章目录 前言基本思路安装依赖包实时捕获屏幕画面转换屏幕画面数据调用窗体显示屏幕截取画面增加实时捕获时间保存实时视频流效果图完整实现代码 前言 日常中如果需要进行大数据分析&#xff0c;那么就要记录用户的使用情况和数据分析。 实时屏幕捕获就可以很好地获取数据&a…

云原生之深入解析Linkerd Service Mesh的功能和使用

一、简介 Linkerd 是 Kubernetes 的一个完全开源的服务网格实现&#xff0c;它通过为你提供运行时调试、可观测性、可靠性和安全性&#xff0c;使运行服务更轻松、更安全&#xff0c;所有这些都不需要对代码进行任何更改。Linkerd 通过在每个服务实例旁边安装一组超轻、透明的…

Other -- 了解网上服务器(ECS、VPS)

喜欢在公网上自己做网站发布的就会研究网上的售卖的各种服务器&#xff0c;下面简单了解下&#xff1a; 1. 虚拟专用服务器&#xff08;VPS,VirtualPrivateServer&#xff09; 借助容器或者虚拟化技术&#xff0c;将一台物理服务器分割成多个虚拟服务器&#xff0c;每个服务器…

MX6ULL学习笔记(十二)Linux 自带的 LED 灯

前言 前面我们都是自己编写 LED 灯驱动&#xff0c;其实像 LED 灯这样非常基础的设备驱动&#xff0c;Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架&#xff0c;因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可&#xff0c;本章我们就来学…

Python基础05-函数

零、文章目录 Python基础05-函数 1、函数的作用及其使用步骤 &#xff08;1&#xff09;函数的作用 在Python实际开发中&#xff0c;我们使用函数的目的只有一个“让我们的代码可以被重复使用” 函数的作用有两个&#xff1a; ① 代码重用&#xff08;代码重复使用&#xf…

【AI工具】GitHub Copilot IDEA安装与使用

GitHub Copilot是一款AI编程助手&#xff0c;它可以帮助开发者编写代码&#xff0c;提供代码建议和自动完成功能。以下是GitHub Copilot在IDEA中的安装和使用步骤&#xff1a; 安装步骤&#xff1a; 打开IDEA&#xff0c;点击File -> Settings -> Plugins。在搜索框中输…

Electron学习第一天 ,启动项目

之前在安装官网的步骤操作&#xff0c;结果报错&#xff0c;找了好多办法&#xff0c;最后这种办法成功启动项目&#xff0c;并且没有报错&#xff0c;特此记录 特别提醒&#xff0c;最好安装淘宝镜像&#xff0c;npm 太慢&#xff0c;会导致报错问题&#xff0c;解决起来个人觉…

windows10 php8连接sql server

一、环境安装 文章目录 一、环境安装1.安装php拓展2.在 Windows 上安装PHP驱动程序3.在 Windows 上安装ODBC驱动 二、php连接sqlserver三、注意事项数据库相关设置相关语法sqlsrv_fetch_array 的示例&#xff1a;sqlsrv_fetch 的示例&#xff1a;echo 和 print_r 的不同 所用资…

Webrtc 学习交流

花了几周的时间研究了一下webrtc &#xff0c;并开发了一个小项目&#xff0c;用来点对点私密聊天 交流传输文件等…后续会继续扩展其功能。 体验地址&#xff0c;大狗子的ID,我在线时可以连接测试到我 f3e0d6d0-cfd7-44a4-b333-e82c821cd927 项目特点 除了交换信令与stun 没…

ES6 面试题 | 01.精选 ES6 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Mybatis 动态SQL的插入操作

需求 : 根据用户的输入情况进行插入 动态SQL:根据需求动态拼接SQL 用户往表中插入数据,有的数据可能不想插入,比如不想让别人知道自己的性别,性别就为空 insert into userinfo(username,password,age,gender,phone) values(?,?,?,?,?); insert into userinfo(username,…

万界星空科技灯具制造行业MES核心功能

万界星空科技灯具制造行业MES系统功能介绍工单管理 MES通过工单来管理生产执行。工单状态有&#xff1a;创建、下达、执行、完成、取消。计划员创建工单&#xff0c;审核通过后释放到设备或产线。仓库可收到工单下达的通知&#xff0c;及时备料。产线只能看到已下达的工单&…

LVS-DR模式部署

目录 一、部署信息 二、部署LVS-DR模式 三、测试 四、DR模式 LVS负载均衡群集 一、部署信息 DR 服务器&#xff1a;172.16.114.70 Web 服务器1&#xff1a;172.16.114.80 Web 服务器2&#xff1a;172.16.114.60 vip&#xff1a;172.16.114.200 客户端&#xff1a;172.16.11…