无需修改输入列表,甚至不需要复制它。你所需要做的只是提取不同长度的子序列。
以下代码如果无法构建一个有效的“阶梯”结构,则会返回 None:
def staircase(nums: list[int]) -> list[list[int]] | None:
if nums:
result = []
w = 1
i = 0
while s := nums[i:i+w]:
if len(s) != w:
break
result.append(s)
i += w
w += 1
else:
return result
print(staircase([0,1,2,3,4,5,6,7,8,9]))
print(staircase([0,1,2,3,4,5,6,7,8]))
输出:
[[0], [1, 2], [3, 4, 5], [6, 7, 8, 9]]
None
该代码尝试从给定的整数列表中构建一个“阶梯”结构,即逐层增加宽度的连续子序列。对于 [0,1,2,3,4,5,6,7,8,9]
这个例子,可以成功构建出阶梯结构;而对于 [0,1,2,3,4,5,6,7,8]
则无法构建,因此返回 None。