app网站建设阿里巴巴/网络推广发展
描述
力扣60. 排列序列
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。
按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
“123” “132” “213” “231” “312” “321”
给定 n 和 k,返回第 k 个排列。
示例 1:
输入:n = 3, k = 3
输出:“213”
示例 2:
输入:n = 4, k = 9
输出:“2314”
示例 3:
输入:n = 3, k = 1
输出:“123”
提示:
1 <= n <= 9
1 <= k <= n!
方法:利用数学规律遍历
思路:
设排列数字个数为n, 求第k个排列,我们可以前往后依次确定第 k 个排列中的每一个位置上的元素。
我们不难发现:以 1 为 a1的排列一共有 (n−1)! 个;
以 2 为 a1的排列一共有 (n−1)! 个⋯。 以 n 为 a 的排列一共有 (n−1)! 个。
因此:
如果 k≤(n−1)!,我们就可以确定排列的首个元素为 1;
如果 (n−1)!<k≤2⋅(n−1)!,我们就可以确定排列的首个元素为 2;
⋯
具体实现及注释:
class Solution {public String getPermutation(int n, int k) {//这个是计算阶乘int[] keyInfomation = new int[n+1];keyInfomation[0] = 1;//标记是否使用boolean[] flags = new boolean[n+1];//记录答案StringBuilder sb = new StringBuilder();for (int i = 1; i <= n; i++) {keyInfomation[i] = i * keyInfomation[i-1];}//这个i代表位数,i=1说明在寻找第一位for (int i = 1; i <= n; i++) {//为什么是k-1呢。首先我们得知道为什么后面会+1,/号是向下取余,比如keyInfomation[n-i] //为30, k为35,那么计算结果为1,但其实应该是2,不足应该向上取,所以最后我们需要加//1。但是这样又会出现特殊情况,那就是keyInfomation[n-i]和k相等的时候,如此计算得2,又//与实际需求不符,这时候减1再除就满足题意了int count = (k-1) / keyInfomation[n-i] + 1;//因为通过count我们已经确定了是第几个数放在i这个位置上,我们通过这个循环遍历寻找这个数for (int j = 1; j <=n; j++) {//用过的数字if (flags[j] == true) continue;//先减再判断count--;if (count != 0) {continue;}sb.append(j+"");flags[j] = true;//防止再遍历后面break;}//这个取模是为了便于计算,相当于把前面已经确定的节点忽略掉,专心寻找下一个点。//这儿为什么需要k-1再去模在加一呢,其实如果k != keyInfomation[n-i]时候,下面这个式子//和k直接模keyInfomation[n-i]结果是一样的,但是当k等于keyInfomation[n-i],实际我们需要//的是keyInfomation[n-i]或者k,而不是0。这是一种极限情况。比如我们确定i位上的数字为//5,当k等于keyInfomation[n-i]的时候,代表5确定在i位上的最后一个排列,也是最大的一个//排列,k再多一个,在i这个位置的数字就要取下一个。如果直接模的话,结果为0,就成了5//在i为上的第一个排列,也就是最小的排列,不合题意k = (k-1) % keyInfomation[n-i] + 1;}return sb.toString();}
}
相关文章:

力扣60. 排列序列
描述 力扣60. 排列序列 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n 3 时, 所有排列如下: “123” “132” “213” “231” “312” “321” 给定 n 和 k,返回…...

Mac如何实现最简单的随时监测实时运行状态的方法
Mac book有着不同于Windows的设计逻辑与交互设计,使得Mac book有着非常棒的使用体验,但是在Mac电脑的使用时间过长时,电脑也会出现响应速度变慢或应用程序崩溃的情况,当发生的时候却不知道什么原因导致的,想要查询电脑…...

时间管理应用(可复制源码)
创建一个简单的时间管理应用程序,结合 Pomodoro 技术使用 HTML、CSS 和 JavaScript 1. HTML 创建一个基本的 HTML 文件 (index.html): <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"&…...

SQL server 列转行
在 SQL Server 中,将列转换为行的操作通常被称为“透视”(Pivot)的逆操作,即“反透视”(Unpivot)。SQL Server 提供了 UNPIVOT 关键字来实现这一功能。假设你有一个表 EmployeeDetails,其中包含…...

aws申请ssl证书的方法【该证书仅供aws】
这里先声明,过程是对的,最终没有达到目的。 原本想着申请ssl证书替代,结果发现aws证书只能给自己的服务器用 但是整套申请证书以及下载,以及使用aws控制台的过程可以参考借鉴。 起因: 腾讯云的ssl证书越来越没法用了…...

Linux中目录配置标准的FHS
文件系统层次结构标准(Filesystem Hierarchy Standard, FHS)定义了Linux和其他类Unix操作系统中文件和目录的标准布局。FHS的目标是确保在不同的Linux发行版之间具有一致的文件系统结构,从而使软件能够在不同的系统上容易地安装和运行。 FHS…...

目标检测YOLO实战应用案例100讲-基于深度学习的人眼视线检测
目录 知识储备 视觉深度的测定 基本知识 视觉检测中的关键技术 单眼感知景深 内部摄像机距离的效果 Face ID 与3D传感技术 什么是Face ID? 3D传感技术原理 主动测距法 被动测距法 基于深度学习的人眼视线检测代码 数据集读取与预处理 卷积神经网络模型构建 模型…...

SpringCloud篇(微服务)
目录 一、认识微服务 1. 单体架构 2. 分布式架构 3. 微服务 3.1. 特点 3.2. 优点 3.3 缺点 二、微服务设计、拆分原则 1. AKF 拆分原则 2. Y轴(功能)关注应用中功能划分,基于不同的业务拆分 3. X轴(水平扩展)…...

[每日一练]过去30天的用户活动
#该题目来源于力扣: 1142. 过去30天的用户活动 II - 力扣(LeetCode) Activity 表:------------------------ | Column Name | Type | ------------------------ | user_id | int | | session_id | int | …...

华为2288HV2服务器安装BCLinux8U6无法显示完整安装界面的问题处理
本文记录了华为2288HV2服务器安装BCLinux8U6无法显示完整安装界面,在安装过程中配置选择时,右侧安装按钮不可见,导致安装无法继续的问题处理过程。 一、问题现象 华为2288HV2服务器安装BCLinux8U6时无法显示完整的安装界面,问题…...

【python】OpenCV—findContours(4.6)
文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数cv2.inRange 6、参考 1、功能描述 给出一张仅含有手指的图片,判断图片中有多少根手指 2、代码实现 导入库函数,图像预处理 import numpy as np import cv2 as cv img cv.im…...

【C++】——多态
一.多态的概念 1.多态 多态(polymorphism)的概念:通俗的来说,就是多种形态。多态分为静态多态(编译时多态)和动态多态(运行时多态),而我们讲的多态大部分都是动态多态。 静态多态主要就是我们前面了解过的函数模板和函数重载,它…...

Web前端开发--HTML语言
文章目录 前言1.介绍2.组成3.基本框架4.常见标签4.1双标签4.1.1.标题标签4.2.2段落标签4.1.3文本格式化标签4.1.4超链接标签4.1.5视频标签4.1.6 音频标签 4.2单标签4.2.1换行标签和水平线标签4.2.2 图像标签 5.表单控件结语 前言 生活中处处都有网站,无论你是学习爬…...

AI驱动的网络空间智能对抗;无人集群系统,多体协同算法创新和故障智能预警
目录 AI驱动的网络空间智能对抗 认知与认知域安全 认知攻击-杀伤链 PPDR主动安全框架 短视频内容分析 不良视频鉴别:人工+智能 舆情监测 非介入式监测 大模型对新闻内容审查与播报 无人集群系统,多体协同算法创新和故障智能预警 一、无人集群系统概述 二、多体协…...

推荐一款SSD硬盘优化器:Auslogics SSD Optimizer Pro
SSD Optimizer Pro 是一款专为优化固态硬盘 (SSD) 性能而设计的专业工具,旨在最大化 SSD 的效率,延长硬盘使用寿命。凭借简便的操作界面和强大的优化功能,SSD Optimizer Pro 可以让用户充分利用 SSD 的优势,从而获得更高的系统性能…...

k8s-service、endpoints、pod之间是怎么进行网络互通的
k8s-service、endpoints、pod之间是怎么进行网络互通的 1、service2、endpoints3、service、endpoints、pod通信图4、不通服务pod内部间访问 1、service 在K8S中,Service是一种抽象,定义了一组Pod的逻辑集合和访问这些Pod的策略。首先,我们需…...

Go语言开发商城管理后台-GoFly框架商城插件已发布 需要Go开发商城的朋友可以来看看哦!
温馨提示:我们分享的文章是给需要的人,不需要的人请绕过,文明浏览,误恶语伤人! 前言 虽然现在做商城的需求不多,但有很多项目中带有商城功能,如社区医院系统有上服务套餐、理疗产品需求、宠物…...

【51单片机】UART串口通信原理 + 使用
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…...

高性能分布式缓存Redis-高可用部署
一、主从架构搭建 为什么要进行主从架构搭建,一台redis不行吗? ①、持久化后的数据只在一台机器上,因此当硬件发生故障时,比如主板或CPU坏了,这时候无法重启服务器,有什么办法可以保证服务器发生故障时数…...

如何使用XSL-FO生成PDF格式的电子发票的技术博文示例
目录 使用 XSL-FO 生成电子发票 PDF:从布局设计到优化为什么选择 XSL-FO?1. 初始设置2. 标题区块3. 买卖方信息4. 商品明细表格5. 合计信息6. 优化代码结构与布局7. 生成 PDF 文件8. 示例总结 使用 XSL-FO 生成电子发票 PDF:从布局设计到优化…...

TDengine 签约山东港,赋能港口数字化转型
随着全球港口物流数字化进程的加速,港口运营面临日益复杂的数据管理挑战,从能源管理、设备监控到运营安全保障,各类数据需要及时存储并高效分析。山东港在信息化建设过程中,数字化综合管理平台的性能和查询功能一度受到瓶颈制约。…...

基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

mysql-workbench 导入csv格式数据报错:Unhandled exception: Could not determine delimiter
xlsx文件中第二行某个单元格有换行符,csv文件中用双引号包起来了,但是python 在采样的时候,只读了前两行,readline可不认识csv的规则。csv文件可以识别双引号包起来的换行符是单元格内部的换行,python的readline识别不…...

使用Python简单实现客户端界面
服务端实现 import threading import timeimport wx from socket import socket, AF_INET, SOCK_STREAMclass LServer(wx.Frame):def __init__(self):wx.Frame.__init__(self, None, id1002, titleL服务器端界面, poswx.DefaultPosition, size(400, 450))# 窗口中添加面板pl …...

15分钟学 Go 第 43 天:前端与Go的结合
第43天:前端与Go的结合 目标:了解Go如何与前端交互,前端使用Vue.js 在现代Web开发中,Go语言常用于后端开发,而Vue.js是一个流行的前端框架,用于构建用户界面。结合二者,可以构建高效、可维护的…...

解决SRS推送webrtc流卡顿问题
目录 1.问题描述2.原因分析3.ffmpeg去掉B帧的方法3.1 命令行推流3.2 ffmpeg源码推流 1.问题描述 使用ffmpeg通过rtmp协议推流给SRS,然后浏览器通过webrtc拉取播放流,经多次测试发现webrtc播放流总是卡顿,而拉取rtmp流是正常的。 2.原因分析…...

GDPU Andriod移动应用 Broadcast Receiver
聆听广播,跟着节拍吧。 计时器 新建一个名为PhoneStateMonitor的工程; 实现一个应用运行时长的计时器,并在界面上刷新计数器,要求包括: (1)在Layout中包含两个TextView控件,横向分…...

CSP/信奥赛C++刷题训练:经典例题 - 栈(1):洛谷P3056 :[USACO12NOV] Clumsy Cows S
CSP/信奥赛C刷题训练:经典例题 - 栈(1):洛谷P3056 :[USACO12NOV] Clumsy Cows S 题目描述 Bessie the cow is trying to type a balanced string of parentheses into her new laptop, but she is sufficiently clums…...

WiFi一直获取不到IP地址是怎么回事?
在当今这个信息化时代,WiFi已成为我们日常生活中不可或缺的一部分。无论是家庭、办公室还是公共场所,WiFi都为我们提供了便捷的无线互联网接入。然而,有时我们可能会遇到WiFi连接后无法获取IP地址的问题,这不仅影响了我们的网络使…...

蓝牙BLE开发——iOS 每次写入数据超过200字节报错?
iOS 写入数据超过200字节报错 文章目录 iOS 写入数据超过200字节报错官方建议:报错问题解决 writeblecharacteristicvalue 官方建议: 并行调用多次会存在写失败的可能性。APP不会对写入数据包大小做限制,但系统与蓝牙设备会限制蓝牙4.0单次…...