Leetcode 算法题 88. 合并两个有序数组
起因, 目的:
- 做题的过程中,不能听歌, 减少干扰。
- 太简单,没意思。太难太复杂,容易放弃。 如何找到难度合适的题?
题目来源: 88. 合并两个有序数组
参考题解: 官方题解,方法二:双指针
继续做双指针。
def solu(nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3):
done = []
# 定义2个指针,从0开始。
p1 = 0
p2 = 0
# while 这个条件,不太好理解。
# 表示, 只要有一个还没处理完, 就继续处理, 直到2个列表都处理完。
while p1 < m or p2 < n:
# 下面这2个是边界条件。
if p1 == m: # nums1 已经处理完了, 只能取 nums2
done.append(nums2[p2])
p2 += 1
elif p2 == n: # nums2 已经处理完了, 只能取 nums1
done.append(nums1[p1])
p1 += 1
# 比较大小
elif nums1[p1] < nums2[p2]:
done.append(nums1[p1])
p1 += 1
else:
done.append(nums2[p2])
p2 += 1
# 最后直接修改 nums1
nums1[:] = done
print(solu( nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 ))