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:
印刷品(一)

您应该使用支持高效搜索和删除元素的数据结构,如红黑树。您应该使用支持高效搜索和删除元素的数据结构,如红黑树。