一起挑战pythontip的题目(31)

简介: 一起挑战pythontip的题目(31)

第 151 题:全排列序列


题目描述:数字集合[1,2,3, ... , n]可以组成 n!个不同的排列序列。将所有的序列按照字典序

升序排序之后,请你输出第 k(从 1 开始)个序列。


例如:n=3, k=4, 则输出:231

Note:给定的 n 在 1 到 9 的范围内,k 在 1 到 n!的范围内。


n=3 时,所有的排列序列为:


123

132

213

231

312

321

示例:

输入:n = 3

k = 1

输出:123


>>> from itertools import permutations as permute
>>> n=3; k=1
>>> int(''.join(list(permute([*[str(i) for i in range(1,n+1)]],n))[k-1]))
123
>>>
>>> perm = lambda n,k:int(''.join(list(permute([*[str(i) for i in range(1,n+1)]],n))[k-1]))
>>> perm(9,1)
123456789
>>> perm(9,-1)
987654312
>>> perm(9,0)
987654321
>>> # k=0 为最后一个
>>> 


============================================================

第 152 题:全排列序列 II

题目描述:数字集合[1,2,3, ... , n]可以组成 n!个不同的排列序列。将所有的序列按照字典序

升序排序之后,请你输出第 k 个序列。

和上题“全排列序列”不同的是,本题给定一个包含多组(n, k)的元组列表 L,请你针对 L

中的每组(n, k),输出其对应的结果,每个结果占一行。

例如:L = [(3, 2), (3, 3), (3,5)], 则输出:

132

213

312

Note:L 中的 n 在 1 到 9 的范围内,k 在 1 到 n!的范围内。

2016.8.13 16:00: 感谢 holidaylover 指出,本题测试数据有误,已修改,原来不能通过的代码

可以尝试再次提交。示例:

输入:L = [[3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6]]

输出:123

132

213

231

312

321

============================================================

第 153 题:最小路径和


题目描述:给你一个由非负整数组成的矩阵 M,请你找到一条从矩阵左上角到右下角的路

径,使其和最小,并输出最小路径的和(注意:每次只能向右走或者向下走)。


例如:

M = [[1, 2, 3],

[1, 2, 3],

[1, 3, 3]]

则输出:9

说明:最小路径上的值分别为(1->1->1->3->3)。

示例:

输入:M = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

输出:8

============================================================

第 154 题:生成括号序列


题目描述:给你一个正整数 n,请你生成所有包含 n 对小括号的合法括号序列,分别将合法

的序列按照字典序升序 输出,每个序列占一行。


例如,n=3, 则输出:


((()))

(()())

(())()

()(())

()()()

============================================================

第 155 题:消失的硬盘容量


题目描述:我们经常发现,购买的硬盘上标注的容量比系统显示的要少。比如,你买了 100MB

的硬盘,插到电脑上,操作系统却显示硬盘的大小只有 95MB,这 5MB 消失了。这是因为

硬盘的制造商认为"一千" 是 1000,但是操作系统认为"一千"是 1024。有几个描述硬盘大小

的单位,他们是 byte, kilobyte, megabyte, gigabyte, terabyte, petabyte, exabyte, zetabyte and

yottabyte。


每一个都是等于前一个的"一千"倍。举个例子 1 gigabyte 是 "一千" megabytes,比如制造商

认为 1 gigabyte 是 1000* 1 megabytes. 操作系统认为 1 gigabyte 是 1024* 1 megabytes.现

在你知道一个由制造商代表的硬盘的大小(也就是制造商认为的硬盘的大小),你想计算百

分比的"丢失的部分"。


单位分别有“B”, “KB”, “MB”, “GB”, “TB”, “PB”, “EB”, “ZB”, “YB” 。

给你一个字符串列表 D,其中每个字符串表示一块硬盘的容量(厂商标注的容量,格式见样

例),请你计算每块硬盘丢失的容量百分比,保留两位小数(具体见样例)。


例如:

D = ['100[MB]', '1[B]']

则输出:

Case #1: 4.63%

Case #2: 0.00%

============================================================



目录
相关文章
|
Python
一起挑战pythontip的题目(1)
一起挑战pythontip的题目(1)
102 0
一起挑战pythontip的题目(36-1)
一起挑战pythontip的题目(36-1)
54 0
|
定位技术 Python
一起挑战pythontip的题目(28)
一起挑战pythontip的题目(28)
88 0
|
数据安全/隐私保护
一起挑战pythontip的题目(13)
一起挑战pythontip的题目(13)
64 0
一起挑战pythontip的题目(5)
一起挑战pythontip的题目(5)
75 0
一起挑战pythontip的题目(19)
一起挑战pythontip的题目(19)
67 0
一起挑战pythontip的题目(35)
一起挑战pythontip的题目(35)
76 0
|
算法 测试技术 定位技术
一起挑战pythontip的题目(20)
一起挑战pythontip的题目(20)
89 0
|
Python
一起挑战pythontip的题目(17)
一起挑战pythontip的题目(17)
73 0
|
数据安全/隐私保护
一起挑战pythontip的题目(7)
一起挑战pythontip的题目(7)
71 0