/**

题目

给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。

初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,httpclient5,6], n = 3
输出:[1,2,githubcom1jie1小可爱2,3,5,6]
示例 2:

输入:nums1 =GitHub [1], m = 1, nums2 = [], n = 0
输出:[1]

提示:

nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[i] <= 109

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

测试代码

var nums1 = [1,2,3,0,0,0]
merge(&nums1, 3, [2,5,6], 3)
print(nums1)

笔记

第一种测试蛙思路 把第二个数组里的数组放到第一个数组里然后排序

第二种思路 创建一个新数组,每次从原来的两个数组里从前往后笔记本电脑排名前十取,找到最小的那测试纸怎么看是否怀孕个元素放进新数组里

第三种思路 不开启新github源码空间,就在第一http代理个数组里进行处理,从后往前取最大值

下面重点讲讲第三种思路,应该算是三指针吧
第一个index1 指向 m-1,即第一个数组的有效数据末端
第一笔记本电脑排名前十个index2 指向 n-1,即第二个数组的末端
第三个indexCur 指向 m + n – 1, 即包含无效数据leetcodeapp怎么做题的第一个数组的末端

然后从后往前遍历无效数据的第一github中文官网个数组, 即 第三个指针indexCur -= 1
在每一个位置都去比较笔记本电脑开不了机 igithub中文官网ndex1 和 index2 的元素
取出较大的一个放到 indexCur
对应的 indehttps和http的区别x1 或者 index2 -= 1 即可

注意这种思路处理的时候,如果取的是 index1, 要和 indexCur 进行数据交换

代码地址

github.com/zmfflying/Z…
*/

解题代码

import Foundation
func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n:测试纸怎么看是否怀孕 Int) {
//记录第一个数组的有效数据末端索引
varhttpclient index1 = m - 1
//第二个数组的末端索引
var index2 =测试手机是否被监控 n - 1
//记录正在处理的索引
var indexCur = m + n - 1
//从尾端开始处理
while indexCur >= 0 {
//测试纸怎么看是否怀孕找出github怎么下载文件leetcode答案前未处理的两段数据的值
let numIndex1 = index1 < 0 ? Int.min :测试姓名与缘分 nums1[index1]
let numIndex2 = indexhttp 3022 < 0 ? Int.min : nums2[index2]
//取出最大值放在尾端
//leetcode刷题指南同时对应索引 -= 1
if numIndex1 > numInd测试工程师ex2 {
//如果是第一段数据要注意交换数据
if nums1[indexCur] != numIn笔记本电脑怎么连wifidex1 {
nums1[index1] = nu测试ms1[indLeetCodeexCur]
nums1[indexCur] = numIndex1
}
index1 -= 1http://192.168.1.1登录
} else {
nums1[indexCur] = numIndex2
index2 -= 1
}
indexCur -= 1
}
}
//测试蛙这种和上面的思路一样,优化后只用处理 n 次就行了, 但是没有上面好理解
//func merge(_ nuleetcode是干什么的ms1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
//    var index1 = m - 1
//    var indgithub怎么读ex2 =笔记本电脑 n - 1
//    var indexCur = m + n - 1
//
//    while index2 >= 0 {
//        if index1 >= 0 && nums1[index1] > nums2[index2] {
//            nums1[indexCur] = nums1[index1]github怎么读
//            index1 -= 1
//        } elsleetcode是干什么的e {
//            nums1[indexCur] = nums2[index2]
//            index2 -leetcode中文官网= 1
//        }
//        indexCur -= 1
//    }
//}