2020网易校招 算法工程师岗位 大题第一道——小易把1到n的所有排列按字典序列排成一排

本文介绍了2019年网易校招算法工程师笔试题,题目要求找出1到n所有排列中,给定排列的倒数第Q个排列。文章提供了两种方法,方法一是通过列举所有可能的排列,方法二是利用排列组合的对称性质。代码实现为Python,方法二仅用五行,虽然未测试,但思路简洁。
摘要由CSDN通过智能技术生成

2019年8月3日,网易校招 算法工程师岗位 大题第一道 

刚才笔试,一道题没做出来, 第一道题,写出来了,时间复杂度还太大,测试超时了。很不甘心,于是交卷后又重新思考了一下。其实很简单

 

题目:有一天,小易把1到n的所有排列按字典序列排成一排。小易从中选出了一个排列,假设它是正数第Q个排列,小易希望你能回答他倒数第Q个排列是什么。

例如1到3的所有排列是:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

若小易选出的排列是 1 2 3 ,则Q=1,而你应该输出排列3 2 1

输入描述:

第一行数字n,表示排列长度接下来一行n个数字,表示选出的排列1<= n <= 300000

输出描述:

一行n个数字,表示所求的排列。

示例1:

输入

3
1 2 3

输出:

3 2 1

示例2:

输入

5
3 1 5 2 4

输出:

3 5 1 4 2 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值