码迷,mamicode.com
首页 > 编程语言 > 详细

88. 合并两个有序数组

时间:2020-04-17 23:51:08      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:ros   pop   font   bsp   mamicode   odi   提交   相等   合并   

技术图片

 

 技术图片

 

 

思路:
  指针i和j分别遍历nums1和nums2;
  取两指针较小者追加到res中,较小指针后移,较大者不动;
  若两指针相等,则两者都追加到res中,两指针均后移;
  i<m或j<n时,停止遍历,将两串之一剩余的部分有序序列追加到res中。
注:本题提交的时候,程序不用return,另外本题必须在nums1原址上做合并操作。

下面写了三种方法,第三种去掉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 < n 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))

 

 

88. 合并两个有序数组

标签:ros   pop   font   bsp   mamicode   odi   提交   相等   合并   

原文地址:https://www.cnblogs.com/panweiwei/p/12723166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!