擅长:python、mysql、java
<p>代码实际上比你写的要简单得多。你知道吗</p>
<pre><code>def merge_lists(list1, list2):
sortedList = []
pointer1 = 0
pointer2 = 0
while pointer1 < len(list1) and pointer2 < len(list2):
if list1[pointer1] < list2[pointer2]:
sortedList.append(list1[pointer1])
pointer1 += 1
elif list1[pointer1] > list2[pointer2]:
sortedList.append(list2[pointer2])
pointer2 += 1
else:
sortedList.append(list1[pointer1])
pointer1 += 1
while pointer1 < len(list1):
sortedList.append(list1[pointer1])
pointer1 += 1
while pointer2 < len(list2):
sortedList.append(list2[pointer2])
pointer2 += 1
return sortedList
</code></pre>
<p>代码中的问题是<code>pointer1</code>和<code>pointer2</code>永远不会为0,因为它们是递增的。因此,您总是执行<code>pointer2 == 0</code>条件的else分支。else语句中的逻辑是错误的,因为您再次从索引1添加数字,如for循环中所述。这就是为什么要再次添加6而不是22,它是示例中第二个列表的索引1处的值。你知道吗</p>