Python 查找满足特定属性的元素对
如果给出了输入[s1,…,sn],并且也给出了属性p,则程序应输出满足该p的连续对 例如,如果p是该对中两个元素的总和应小于20,则输入Python 查找满足特定属性的元素对,python,list,algorithm,Python,List,Algorithm,如果给出了输入[s1,…,sn],并且也给出了属性p,则程序应输出满足该p的连续对 例如,如果p是该对中两个元素的总和应小于20,则输入[1,10,29,17]应输出[(1,10)],因为它是唯一满足该p的连续对 为了简单起见,我们假设检查属性p是常数时间。一个简单的解决方案是循环列表,使其为O(n) 例如在python中 def(ls,P:可调用): r=[] 对于范围内的i(透镜(ls)-1): 如果P(ls[i],ls[i+1]): r、 追加((ls[i],ls[i+1])) 返回r 断
[1,10,29,17]
应输出[(1,10)]
,因为它是唯一满足该p的连续对
为了简单起见,我们假设检查属性p是常数时间。一个简单的解决方案是循环列表,使其为O(n)
例如在python中
def(ls,P:可调用):
r=[]
对于范围内的i(透镜(ls)-1):
如果P(ls[i],ls[i+1]):
r、 追加((ls[i],ls[i+1]))
返回r
断言f([1,10,29,17],lambda x,y:x+yNo,没有。由于您将序列和属性都作为抽象实体,因此没有可以用来避免基本要求的固有信息:我们必须检查列表中的每个元素。这使得O(N)成为理论最小值