调用findCrossoverIndex报错缺少left、right必填位置参数如何解决?
问题原因
你遇到的报错根本原因是findCrossoverIndex的参数定义和测试用例的调用逻辑不匹配:
- 你在定义
findCrossoverIndex时额外声明了left、right两个必填参数 - 但测试用例调用该函数时,仅传入了两个待比较的列表
x、y,没有传入left、right,因此触发参数缺失的类型错误
解决方案
left和right是二分查找的内部边界参数,不需要由调用方传入,直接在外层函数内部初始化默认值即可,修改findCrossoverIndex函数如下:
def findCrossoverIndex(x, y): assert(len(x) == len(y)) assert(x[0] > y[0]) n = len(x) assert(x[n-1] < y[n-1]) # 满足这个条件说明列表长度至少为2,否则长度为1时x[0]不可能同时大于和小于y[0] # 内部初始化二分查找边界 left = 0 right = n - 1 return findCrossoverIndexHelper(x, y, left, right)
验证效果
修改后运行所有测试用例,将输出:
j1 = 1 j2 = 5 j3 = 0 j4 = 2 Congratulations: all test cases passed - 10 points
内容的提问来源于stack exchange,提问作者user10620036
相关产品推荐
相关产品推荐

