Python 检查列表a中最接近的最大元素,对于列表b中的每个元素,是否有任何针对大型列表的代码优化建议
功能:Python 检查列表a中最接近的最大元素,对于列表b中的每个元素,是否有任何针对大型列表的代码优化建议,python,list,algorithm,optimization,Python,List,Algorithm,Optimization,功能: 检查'list a'中与'list b'中每个元素最近的最大元素 如果找到元素,请从原始列表中删除该元素 因此,可以比较下一个元素 列表a=[2,3,4],列表b=[0,0,7]=>2,3,-1 如果未找到元素,则返回:-1 最后打印出-1的计数 有没有针对大型列表优化此代码的建议 import sys def next(arr, target): #method returns index of nex greater element or -1 start = 0 e
检查'list a'中与'list b'中每个元素最近的最大元素 如果找到元素,请从原始列表中删除该元素 因此,可以比较下一个元素 列表a=[2,3,4],列表b=[0,0,7]=>2,3,-1 如果未找到元素,则返回:-1 最后打印出-1的计数 有没有针对大型列表优化此代码的建议
import sys
def next(arr, target): #method returns index of nex greater element or -1
start = 0
end = len(arr) - 1
ans = -1
while (start <= end):
mid = (start + end) // 2
if (arr[mid] <= target):
start = mid + 1
else:
ans = mid
end = mid - 1
return ans
def main():
q=list(map(int,sys.stdin.readline().split())) #list1
r=list(map(int,sys.stdin.readline().split())) #list2
q.sort()
r.sort()
var,count=0,0
for tst in r:
var=next(q,tst)
q.pop(var)
if var == -1:
count+=1
print(count)
main()
导入系统
def next(arr,target):#方法返回nex较大元素的索引或-1
开始=0
结束=长度(arr)-1
ans=-1
while(start首先对两个列表排序。然后比较两个值。如果a[i]不大于b[i],则转到a的下一个元素
a = [2,3,4]
b = [0,0,7]
a.sort()
b.sort()
c = [];
x = 0;
for i in range(len(b)):
while x < len(a):
if a[x] > b[i]:
c.append(a[x])
break;
x = x + 1;
if x >= len(a):
c.append(-1)
else:
x = x + 1;
for i in c:
print(i)
a=[2,3,4]
b=[0,0,7]
a、 排序()
b、 排序()
c=[];
x=0;
对于范围内的i(len(b)):
当xb[i]:
c、 追加(a[x])
打破
x=x+1;
如果x>=len(a):
c、 附加(-1)
其他:
x=x+1;
对于c中的i:
印刷品(一)
首先对两个列表进行排序。然后比较两个值。如果a[i]不大于b[i],则转到a的下一个元素
a = [2,3,4]
b = [0,0,7]
a.sort()
b.sort()
c = [];
x = 0;
for i in range(len(b)):
while x < len(a):
if a[x] > b[i]:
c.append(a[x])
break;
x = x + 1;
if x >= len(a):
c.append(-1)
else:
x = x + 1;
for i in c:
print(i)
a=[2,3,4]
b=[0,0,7]
a、 排序()
b、 排序()
c=[];
x=0;
对于范围内的i(len(b)):
当xb[i]:
c、 追加(a[x])
打破
x=x+1;
如果x>=len(a):
c、 附加(-1)
其他:
x=x+1;
对于c中的i:
印刷品(一)
您应该使用支持高效搜索和删除元素的数据结构,如红黑树。您应该使用支持高效搜索和删除元素的数据结构,如红黑树。