第一种:合并后的数组不去重
arr1 = [4, 4, 4, 7, 8, 9]
arr2 = [4, 4, 4, 7, 8, 9]
def mergeTwoArray(ls1, ls2):
if not ls1:
return ls2
if not ls2:
return ls1
len1 = len(ls1)
len2 = len(ls2)
ls = []
i = 0
j = 0
while i < len1 and j < len2:
if ls1[i] < ls2[j]:
ls.append(ls1[i])
i += 1
elif ls1[i] >= ls2[j]:
ls.append(ls2[j])
j += 1
if i == len1:
ls.extend(ls2[j:])
break
if j == len2:
ls.extend(ls1[i:])
break
return ls
输出结果:
[4, 4, 4, 4, 4, 4, 7, 7, 8, 8, 9, 9]
第二种:去除两个数组里面重复的,但不去除原数组自带的重复数字
def mergeTwoArray(ls1, ls2):
if not ls1:
return ls2
if not ls2:
return ls1
len1 = len(ls1)
len2 = len(ls2)
ls = []
i = 0
j = 0
while i < len1 and j < len2:
if ls1[i] < ls2[j]:
ls.append(ls1[i])
i += 1
elif ls1[i] > ls2[j]:
ls.append(ls2[j])
j += 1
else:
ls.append(ls1[i])
j += 1
i += 1
if i == len1:
ls.extend(ls2[j:])
break
if j == len2:
ls.extend(ls1[i:])
break
return ls
if __name__ == "__main__":
print(mergeTwoArray(arr1, arr2))
输出结果:
[4, 4, 4, 7, 8, 9]
以上两种解法区别在于:
- while循环中if条件判断语句加了一个else分支
- 修改了elif中的>=号变为了>号