【发布时间】:2018-04-18 00:40:42
【问题描述】:
问题是从给定列表中查找不包含大于指定上限数字的子列表的总数,例如right,并且子列表最大数量应该大于下限,例如@987654324 @ .假设我的列表是:x=[2, 0, 11, 3, 0] 并且子列表元素的上限是 10 并且下限是 1 那么我的子列表可以是 [[2],[2,0],[3],[3,0]] 因为子列表总是连续的。我的脚本运行良好并产生正确的输出,但需要一些优化
def query(sliced,left,right):
end_index=0
count=0
leng=len(sliced)
for i in range(leng):
stack=[]
end_index=i
while(end_index<leng and sliced[end_index]<=right):
stack.append(sliced[end_index])
if max(stack)>=left:
count+=1
end_index+=1
print (count)
origin=[2,0,11,3,0]
left=1
right=10
query(origin,left,right)
output:4
对于一个列表来说,x=[2,0,0,1,11,14,3,5] 有效的子列表可以是 [[2],[2,0],[2,0,0],[2,0,0,1],[0,0,1],[0,1],[1],[3],[5],[3,5]],总数为 10
【问题讨论】:
-
我想这在codereview上会更好?
-
在您的示例中您说:我的子列表可以是 [[2]、[2,0]、[3]、[3,0]],为什么不是 [0,2] 或[0,3]?
-
@DRPK 因为子列表是连续的,并且子列表中第一个元素的索引必须小于其他元素,即它们需要按索引递增的顺序排列。
-
@Demonking28:因为你说:输出:4 并且我的脚本运行良好......在这种情况下输出应该是 [[0, 0], [2, 0], [0, 2] ,[0, 3], [3, 0], [3, 2], [2, 3]] 其计数为 7
-
@Demonking28。该问题不涉及特定编程问题。它只是询问有关优化某些任意代码(已经有效)的一般建议,而没有给出任何评估标准。 (PS:见the FAQ on this subject接受答案的最后一段)。
标签: python algorithm python-3.x optimization