3年的菜鸟 2022-03-15 14:20 采纳率: 33.3%
浏览 22

合并有序列表中出现list out of range报错的问题

问题遇到的现象和发生背景

leetcode21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

问题相关代码,请勿粘贴截图

def mergeTwoLists(list1, list2):
i = j = 0
c = []
while (i < len(list1) and j < len(list2)):
if list1[i] < list2[j]:
c.append(list1[i])
i += 1
if list1[i] > list2[j]:
c.append(list2[j])
j += 1
else:
c.append(list1[i])
c.append(list2[j])
i += 1
j += 1
return c

res = mergeTwoLists([3,4,2], [4,1,5])
print(res)

运行结果及报错内容

Traceback (most recent call last):
File "D:\python_work\20220302.py", line 92, in
res = mergeTwoLists([3,4,2], [4,1,5])
File "D:\python_work\20220302.py", line 82, in mergeTwoLists
if list1[i] > list2[j]:
IndexError: list index out of range

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 陈年椰子 2022-03-15 14:31
    关注

    大概看了了一下, 要么,循环条件要改,要么循环体里要做判断

    while (i < len(list1)-1  and j < len(list2)-1):
    
    
    

    比如 len(list1) = 10
    i = 8 时,还可以执行一次循环
    i =9 时, 就不能执行了了
    因为 list1[9] 是最后一个元素了。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月15日

悬赏问题

  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来
  • ¥15 java 判断某个数 区间是否存在
  • ¥15 appium控制多个雷电模拟器问题
  • ¥15 C# iMobileDevice
  • ¥15 谁会做这个啊#ensp#Boson NetSim
  • ¥15 如何编写针对TPS6503320FRGE型号的电源管理芯片的编程代码?
  • ¥15 设计简单目录管理系统,要满足以下内容
  • ¥15 关于九十度混合耦合器信号分析问题
  • ¥15 Cesm如何关闭不用的模块呢