88. 合并两个有序数组
2021-02-14 05:20
标签:ros pop font bsp mamicode odi 提交 相等 合并 88. 合并两个有序数组 标签:ros pop font bsp mamicode odi 提交 相等 合并 原文地址:https://www.cnblogs.com/panweiwei/p/12723166.html思路:
指针i和j分别遍历nums1和nums2;
取两指针较小者追加到res中,较小指针后移,较大者不动;
若两指针相等,则两者都追加到res中,两指针均后移;
i
下面写了三种方法,第三种去掉return是通过的。 1 class Solution(object):
2 def merge(self, nums1, m, nums2, n):
3 """
4 :type nums1: List[int]
5 :type m: int
6 :type nums2: List[int]
7 :type n: int
8 :rtype: None Do not return anything, modify nums1 in-place instead.
9 """
10 i = j = 0
11 while j and i m:
12 if nums1[i] nums2[j]:
13 i += 1
14 elif nums1[i] == nums2[j]:
15 i += 1
16 nums1.insert(i, nums2[j])
17 i += 1
18 j += 1
19 m += 1
20 elif nums1[i] > nums2[j]:
21 if i == 0:
22 nums1.insert(i, nums2[j])
23 else:
24 nums1.insert(i - 1, nums2[j])
25 j += 1
26 if i == m and j n:
27 while j n:
28 nums1[i] = nums2[j]
29 i += 1
30 j += 1
31 while nums1[-1] == 0:
32 nums1.pop(-1)
33 return nums1
34
35 def merge2(self, nums1, m, nums2, n):
36 """
37 :type nums1: List[int]
38 :type m: int
39 :type nums2: List[int]
40 :type n: int
41 :rtype: None Do not return anything, modify nums1 in-place instead.
42 """
43 nums1 = nums1[0:m] + nums2
44 nums1.sort()
45 return nums1
46
47 def merge3(self, nums1, m, nums2, n):
48 """
49 :type nums1: List[int]
50 :type m: int
51 :type nums2: List[int]
52 :type n: int
53 :rtype: None Do not return anything, modify nums1 in-place instead.
54 """
55 i, j = -1, 0
56 while j len(nums2):
57 nums1[i] = nums2[j]
58 i -= 1
59 j += 1
60 nums1.sort()
61 return nums1
62
63
64 if __name__ == ‘__main__‘:
65 solution = Solution()
66 print(solution.merge3(nums1=[1, 2, 3, 0, 0, 0], m=3, nums2=[2, 5, 6], n=3))
67 # print(solution.merge3(nums1=[2, 0], m=1, nums2=[1], n=1))