Python程序输入特定测试用例时持续请求输入无法正常运行问题求助
问题成因排查
你观察到的「持续请求输入」是误判,实际是代码进入无限死循环导致程序无响应,触发原因如下:
- 你给出的测试用例执行到匹配
a的最后一个元素4时,b的遍历指针j已经走到了数组末尾(值为4,等于len(b)),此时内层while j!= len(b)的循环永远不会触发 - 外层
while i!= len(a)的循环条件持续成立,但循环体内没有任何修改i/j变量的逻辑,程序就会卡在空循环里永远不会往下执行。
修复方案
只需要在外层循环内新增j是否越界的判断,匹配失败就跳出外层循环即可:
def main(): n = int(input().strip()) a = list(map(int, input().rstrip().split())) b = list(map(int, input().rstrip().split())) a.sort() b.sort() total=0 i=0 j=0 while i!=len(a): # 新增判断:b已经遍历完,剩下的a元素不可能匹配,直接跳出 if j == len(b): break while j!=len(b): if a[i] < b[j]: i+=1 break if a[i]==b[j]: total+=1 i+=1 j+=1 break else: j+=1 if total==n: print(n) else: print(total+1) main()
修改后输入你给出的测试用例会正确输出4。
内容的提问来源于stack exchange,提问作者Ishan Sahu
相关产品推荐
相关产品推荐

