python - 线路安排问题。 (有人可以提出一个更省时的解决方案吗?)

标签 python algorithm math

从 1 开始的正整数按行排列。第 i 行有 i 个数字。例如,这些将是 前四行:

1 | 2, 3 | 4, 5, 6 |7, 8, 9, 10

编写一个函数,接受参数“L”并返回此排列的第 L 行。


这是我的方法:

def find_line(l):
    array = []
    x = 1
    for i in range(1, l + 1):
        while len(array) != I:
            array.append(x)
            x += 1 
            if i == l:
                return array
            else:
                array = []

最佳答案

您不需要循环。您可以通过以下方式的系列之和直接计算组中的第一个数字:

start =  1 + (n * (n + 1)) // 2

如果您希望 n 从 1 而不是 0 开始,则需要从 n 中减去。

def group(n):
    n -= 1
    start =  1 + (n * (n + 1)) // 2
    return list(range(start, start + n +1))

# try it on first 10 numbers: 
for i in range(1, 10):
    print(group(i))

这将打印:

[1]
[2, 3]
[4, 5, 6]
[7, 8, 9, 10]
[11, 12, 13, 14, 15]
[16, 17, 18, 19, 20, 21]
[22, 23, 24, 25, 26, 27, 28]
[29, 30, 31, 32, 33, 34, 35, 36]
[37, 38, 39, 40, 41, 42, 43, 44, 45]

如果需要字符串,可以使用 join 或类似方法。

关于python - 线路安排问题。 (有人可以提出一个更省时的解决方案吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63755589/

相关文章:

python - 如何在运行时安装和导入 Python 模块?

python gstreamer脚本错误消息没有元素 "h264parse"

c++ - 寻求有关 FFT 模板的帮助

java - 配对不同集合中的元素 : how to avoid deep neSTLed for loops?

algorithm - 如何转换两组离散点(向量)以帮助以共同的比例绘制它们

c - 等距瓷砖拾取/选择算法

python - tf.abs() 函数从复数输入张量生成复数输出张量

python - 为什么复制 Pandas DataFrame 后属性丢失

java - 验证自定义语法

r - 优化(最小化)文件 : an optimization problem in line with permutations and agenda scheduling 中的行数