数组中的逆序对
这个题就是在归并排序的合并的过程中,加入逆序对的统计。在看归并排序时先做一道简单题,合并两个有序数组。
- 题目说明:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
- 解题思路:设置两个指针分别指向两个数组,这两个指针指向的数字谁比较小就把它移到新数组种,同时指针往前1个位置
class Solution:
def merge(self, nums1, nums2):
# 设置两个指针分别指向两个数组
l, r = 0, 0
new_list = []
# 这两个指针指向的数字谁比较小就把它移到新数组种,同时指针往前1个位置
while l<len(nums1) and r<len(nums2):
if nums1[l] < nums2[r]:
new_list.append(nums1[l])
l+=1
else:
new_list.append(nums2[r])
r+=1
# 加入剩余的数字
new_list.extend(nums1[l:])
new_list.extend(nums2[r:])
return new_list
归并排序:
归并排序的过程和上述过程差不多,归并排序就是分治,比上述多了一个分的过程。代码如下:
class Solution:
def merge(self, list_left, list_right):
l, r