力扣(LeetCode)60. 排列序列(C++)

news2024/9/22 13:39:51

枚举

枚举每一位可能的数字。
dd
如图。算法流程如上图。

思路分析 :
一个数 n n n ,可以组成的排列数量有 n ! n! n! 。当首位确定,剩余位能组成的排列数量 ( n − 1 ) ! (n-1)! (n1)! ,依次类推 ( n − 2 ) ! / ( n − 3 ) ! / ( n − 4 ) ! / … / 2 ! / 1 ! / 0 ! (n-2)!/(n-3)!/(n-4)!/\dots/2!/1!/0! (n2)!/(n3)!/(n4)!//2!/1!/0! 。对照算法流程图,发现,对于同一个位置,按字典序枚举,当权重 k k k 大于当前位置确定后的排列数量时,我们减去这个排列数量;当权重 k k k 小于等于排列当前位置确定后的排列数量时,就可以确定当前位置的数。

class Solution {
public:
    string getPermutation(int n, int k) {
        string ans;
        vector<bool> st(10,false);
        for(int i = 0 ;i<n;i++) {
            int fact = 1;
            for(int j = 1;j<=n-i-1;j++) fact*=j;
            for(int j = 1;j<=n;j++){
                if(!st[j]){
                    if(fact<k) k-=fact;//枚举每一位数
                    else{
                        ans+=to_string(j);
                        st[j] = true;
                        break;
                    }
                }
            }
        }
        return ans ; 
    }
};

时间复杂度 O ( n 2 ) O(n^2) O(n2) , 遍历 n n n 个位置,对于每个位置枚举 n n n 个数的时间复杂度 O ( n 2 ) O(n^2) O(n2)

空间复杂度 O ( n ) O(n) O(n) b o o l bool bool 数组的空间复杂度 O ( n ) O(n) O(n)

致语

理解思路很重要!
欢迎读者在评论区留言,答主看到就会回复的。

AC

AC

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

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

相关文章

CentOS7安装MYSQL8.X的教程详解

1-首先查看系统是否存在mysql&#xff0c;无则不返回 1 # rpm -qa|grep mysql 2-安装wget 1 # yum -y install wget 3-抓取mariadb并删除包&#xff0c;无则不返回 1 # rpm -qa|grep mariadb 4-删除mariadb-libs-5.5.68-1.el7.x86_64 1 # rpm -e --nodeps mariadb-libs-…

本节作业之数组求和及其平均值、求数组最大值、最小值、数组转换为分割字符串、新增数组案例、筛选数组案例、删除指定数组元素、翻转数组、数组排序(冒泡排序)

本节作业之数组求和及其平均值、求数组最大值、最小值、数组转换为分割字符串、新增数组案例、筛选数组案例、删除指定数组元素、翻转数组、数组排序<冒泡排序>求数组[2,6,1,7,4]里面所有的元素的和以及平均值求数组[2,6,1,77,52,25,7]中的最大值求数组[2,6,1,77,52,25,7…

Linux - netstat 查看系统端口占用和监听情况

文章目录功能语法示例显示 tcp&#xff0c;udp 的端口和进程Show both listening and non-listening socketsList all tcp ports.List all udp portsList only listening portsList only listening TCP ports.List only listening UDP ports.List only the listening UNIX port…

Android 性能优化方法论【总结篇】

作为一位多年长期做性能优化的开发者&#xff0c;在这篇文章中对性能优化的方法论做一些总结&#xff0c;以供大家借鉴。 性能优化的本质 首先&#xff0c;我先介绍一下性能优化的本质。我对其本质的认知是这样的&#xff1a;性能优化的本质是合理且充分的使用硬件资源&#x…

分享感恩节联系客户话术

看了一眼在手边的日历&#xff0c;发现今天是11月24日&#xff0c;一年一度的感恩节又到了&#xff0c;不得不感叹时间过得真快&#xff0c;每年十一月的第四个星期四是感恩节。 随着各国多元文化的发展&#xff0c;感恩节也越来越被世界各地传颂&#xff0c;多少都会有一些影…

WANLSHOP 直播短视频种草多用户电商系统源码自营+多商户+多终端(H5+小程序+APP)

WANLSHOP高级版 可用于自营外包项目(多主体)、 可用于外包定制开发项目、 提供开源源码&#xff0c;私有化部署、一款基于 FastAdmin Uni-APP 开发的 多终端&#xff08;H5移动端、APP、微信小程序、微信公众号&#xff09;、多用户商城系统拥有多种运营模式B2B2C/B2C&#xf…

python安装依赖库

一、安装pip 1、打开终端&#xff0c;输入&#xff1a; pip3 install tushare -i https://pypi.douban.com/simple 2、验证是否安装成功 打开终端&#xff0c;输入&#xff1a;pip3 出现以上页面&#xff0c;则安装成功 二、安装flask 1、打开终端&#xff0c;输入&…

mybatis-plus学习笔记

文章目录1 简介2 初始化项目2.1引入pom2.2 引入lombok插件2.3 配置信息2.4 创建实体类2.5 创建mapper2.6 配置注解MapperScan2.7 编写测试类2.8 配置MyBatis日志3 测试基本的CRUD3.1 新增3.2 查询3.3 修改3.4 删除4 自定义动态sql5 Service 层使用mybatis-plus方法5.1 service层…

使用hive进行大数据项目分析

目录 一、首先要创建表&#xff1a;在txt记事本中先输入创建语句备用&#xff0c;创建class1~class5的表。 二、启动hadoop集群&#xff0c;MySQL&#xff0c;hive。 三、创建数据库zhh&#xff0c;用户为zhh&#xff0c;之后将之前写在txt记事本里的创建表class1~class5的命…

浅谈企业信息化安全建设中的三大误区

伴随着信息化的深度建设与应用&#xff0c;与之相伴的信息安全事件也层出不穷&#xff01;很多企业开始关注信息安全问题、关注信息安全建设&#xff0c;大家的共识已经达到前所未有的高度。 虽然许多的企业虽然认识到信息安全的重要性&#xff0c;在实际实施过程中却又无从下…

【附源码】计算机毕业设计JAVA亦心化妆品网站

【附源码】计算机毕业设计JAVA亦心化妆品网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA myba…

【软件测试】我们测试人搭上元宇宙的列车,测试一直在进军......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 虚拟宇宙&#xff0…

微信抽奖小程序开发_分享微信抽奖小程序制作的步骤

各位商家在节日期间做活动的时候&#xff0c;都希望用更少的费用去或者更好的宣传和推广的效果。比较常见的就是抽奖活动小程序。无须玩家下载&#xff0c;通过微信扫码或者指定入口就可以参与。 方便&#xff0c;效果又好。 那么,性价比高的抽奖活动小程序怎么做&#xff1f…

使用 MITRE ATTCK 技术保护您的 Active Directory安全

Active Directory (AD域)保存着企业的敏感数据&#xff0c;例如用户凭据、员工的个人信息、安全权限等。正因为如此&#xff0c;AD域很容易成为网络攻击者的目标。恶意攻击者不断升级新的攻击策略&#xff0c;使企业保护AD域安全成为一项挑战。这就是为什么每个企业都必须制定网…

scratch猫捉老鼠 电子学会图形化编程scratch等级考试一级真题和答案解析2022年9月

目录 scratch猫捉老鼠 一、题目要求 1、准备工作 2、功能实现 二、案例分析

【U8+】用友U8成本管理模块下,定额分配标准中无法取到新增存货的数据。

【问题描述】 用友U8&#xff0c;新增存货后&#xff0c; 在【成本管理】模块下&#xff0c;操作【定额分配标准】取数后&#xff0c;无法取到新增存货数据。 【解决方案】 由于没有过多的研究过用友U8的成本管理模块&#xff0c; 以下过程是在处理该问题时&#xff0c;整理的…

java发送邮件

前言 借用hutool工具&#xff0c;实现多账号发送邮件 相关实现 maven依赖 Hutool对所有第三方都是可选依赖&#xff0c;因此在使用MailUtil时需要自行引入第三方依赖。 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</arti…

机器学习笔记之高斯网络(一)基本介绍

机器学习笔记之高斯网络——基本介绍引言回顾&#xff1a;条件独立性概率图模型高斯网络高斯网络介绍高斯网络的条件独立性随机变量之间的边缘独立随机变量之间的条件独立引言 本节将介绍高斯网络 回顾&#xff1a; 条件独立性 在概率图模型——背景介绍中介绍了条件独立性…

Dissertation写作常用的研究方法

英文毕业论文的撰写&#xff0c;有很多值得注意的重要因素&#xff0c;而研究方法的选择无疑是最重要的内容之一。留学毕业论文不同于平常的研究性论文&#xff0c;其难度和复杂程度要大得多&#xff1b;同时&#xff0c;导师对于留学毕业论文的要求又非常严格。因此写好一篇优…

[附源码]SSM计算机毕业设计教务系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…