在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6]
提示: -10^9 <= nums1[i], nums2[i] <= 10^9
思路一 class Solution { func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) { nums1.removeLast(n) nums1.append(contentsOf: nums2) nums1.sort() } }
思路二(双指针法) class Solution { func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) { var i = m - 1 , j = n - 1 , res = m + n - 1 while j >= 0 { if i >= 0 && nums2[j] < nums1[i] { nums1[res] = nums1[i] i -= 1 } else { nums1[res] = nums2[j] j -= 1 } res -= 1 } } }
如果nums1 nums2都为可变数组 inout ,解法如下 func merge(_ nums1: inout [Int], _ m: Int, _ nums2: inout [Int], _ n: Int) { var num3 = [Int](repeating: 0, count: m+n) num3.removeAll() while nums1.count > 0 && nums2.count > 0 { if nums1[0] < nums2[0] { num3.append(nums1[0]) nums1.removeFirst() } else { num3.append(nums2[0]) nums2.removeFirst() } } if nums1.count == 0 { num3.append(contentsOf: nums2) } if nums2.count == 0 { num3.append(contentsOf: nums1) } print(num3) }
|
请发表评论