[toc]
题目:https://leetcode-cn.com/problems/merge-sorted-array/
要求
合并两个给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
思路
- 双索引
- 复制一个数组出来
- 遍历两个数组赋值
代码
class LeetCode88 {
static List<int> num1Copy = [];
static merge(List<int> nums1, int m, List<int> nums2, int n) {
int num1Index = 0;
int num2Index = 0;
num1Copy.clear();
//备份num1数组
for (var i = 0; i < m; i++) {
num1Copy.add(nums1[i]);
}
int num1CopyIndex = 0; //记录备份数组索引
//两个数组都得比较完
while (num2Index < n || num1CopyIndex < m) {
if (num1CopyIndex < m && num2Index < n) {
//正常情况
if (num1Copy[num1CopyIndex] < nums2[num2Index]) {
nums1[num1Index] = num1Copy[num1CopyIndex];
num1CopyIndex += 1;
} else {
nums1[num1Index] = nums2[num2Index];
num2Index += 1;
}
} else {
if (num1CopyIndex < m) {//num1还没比较完
nums1[num1Index] = num1Copy[num1CopyIndex];
num1CopyIndex += 1;
} else {//num2还没比较完阿
nums1[num1Index] = nums2[num2Index];
num2Index += 1;
}
}
num1Index += 1;
}
print(nums1);
}
}
main(List<String> args) {
LeetCode88.merge([2, 0], 1, [1], 1);
}
执行结果结果
[1, 2]