|
1
6
我发现洗牌可以被滥用来解决这个问题
分布不均匀,但这不是要求。
对于统一分发,可以使用此(较长)版本
它是如何工作的
这是密码
这两种解决方案都是针对生产线的
第一个(非统一的)有效地使生产线像这样工作
因此,我们得到(0..i-1)而不是(1..i)的范围
第二个解决方案取代
|
|
|
2
5
在整理了数字列表之后,让
|
|
|
3
3
循环移动列表中的每个元素, as suggested by Bart 很容易:
对于随机解
:在这种情况下,请求一个一行程序并不是一个好主意,因为要使用的明显功能,即
我自己,我会选择这个:
|
|
|
4
1
以下是使用O(n)时间和O(1)额外内存的方法: 可理解代码:
一个一行程序(假设“a”是数组):
代码是用Ruby编写的,但毫无疑问它很容易翻译成Python 干杯 P.S.:解决方案修改数组。 |
|
|
5
1
固定O(N)时间内的“一个衬板”:
循环将元素从最大索引(len(a)-1)向下挑选到下一个最小索引(1)。元素k的选项池只包含从0到k-1的索引;一旦选中,元素将不会再次移动。 加扰后,任何元素都不能停留在其原始位置,因为:
[编辑:我认为这在逻辑上等同于Ruby答案] |
|
6
1
这个是O(N)。在循环中进行导入有点傻,但您需要一个一行程序
这里是当L=100000个样本的范围(5)时的输出分布
|
|
|
7
1
很长一段时间内我的第一个python程序。与上面的许多程序不同,这个程序需要O(n)时间。
更新 :Paul显示上述程序不正确。谢谢,保罗。下面是同一个程序的另一个更好的版本:
|
|
|
8
0
对不起,这不是一条线,但这行得通
干杯 |
|
|
9
0
(好的,我还有一行0…) |
|
|
10
0
对于O(N)中的一个:
|
|
|
11
0
以下是Stephan202的循环移位,它以随机选择的移位增量作为一个线性执行:
|