第 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%
============================================================