首页 > 编程语言 > 详细

LeetCode 88 _ 合并两个有序数组

时间:2020-10-17 19:06:39      阅读:23      评论:0      收藏:0      [点我收藏+]

1. 题目描述

技术分享图片

 

2. 代码_解法1

1 class Solution:
2     def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
3         """
4         Do not return anything, modify nums1 in-place instead.
5         """
6         nums1[:] = sorted(nums1[:m] + nums2)

思想: 先拼接2个数组, 再排序.

解法2

 1 class Solution:
 2     def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
 3         """
 4         Do not return anything, modify nums1 in-place instead.
 5         """
 6         i,j,k = m-1,n-1,len(nums1)-1
 7         while i >=0 and j >= 0:
 8             if nums1[i] >= nums2[j]:
 9                 nums1[k] = nums1[i]
10                 i -= 1
11                 k -= 1
12             else:
13                 nums1[k] = nums2[j]
14                 j -= 1
15                 k -= 1
16         while j >= 0:
17             nums1[k] = nums2[j]
18             j -= 1
19             k -= 1

思想: 通过对比2个数组的元素大小, 然后更新数组nums1.

         也就是通过从后往前, 通过两个数组 i, j 的索引和最终nums1的索引k来更新nums1.

 

LeetCode 88 _ 合并两个有序数组

原文:https://www.cnblogs.com/vvzhang/p/13831702.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!