当前位置:网站首页>88. 合并两个有序数组
88. 合并两个有序数组
2022-07-03 05:45:00 【yitahutu79】
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
示例 1:
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
示例 2:
输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。
示例 3:
输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
提示:
nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[j] <= 109
方法一:双指针法
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int arr[205] = {
0};
for (int i = 0, n1 = 0, n2 = 0; i < m + n; i++){
if (n1 == m) arr[i] = nums2[n2++];
else if(n2 == n) arr[i] = nums1[n1++];
else if (nums1[n1] < nums2[n2]) arr[i] = nums1[n1++];
else arr[i] = nums2[n2++];
}
for (int i = 0, j = 0; i < m + n; i++) {
nums1[i] = arr[j++];
}
}
};
方法二:sort排序
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for (int i = 0; i < n; i++) {
nums1[m + i] = nums2[i];
}
sort(nums1.begin(), nums1.end());
}
};
边栏推荐
- Strategy pattern: encapsulate changes and respond flexibly to changes in requirements
- 期末复习(DAY6)
- 1. 两数之和
- 最大似然估计,散度,交叉熵
- [written examination question analysis] | | get [sizeof and strlen] [pointer and array] graphic explanation + code analysis
- [teacher Zhao Yuqiang] RDB persistence of redis
- Jetson AGX Orin 平台移植ar0233-gw5200-max9295相机驱动
- Common exceptions when Jenkins is released (continuous update...)
- redis 遇到 NOAUTH Authentication required
- MySQL startup error: several solutions to the server quit without updating PID file
猜你喜欢
今天很多 CTO 都是被幹掉的,因為他沒有成就業務
Analysis of the example of network subnet division in secondary vocational school
Final review (Day5)
Beaucoup de CTO ont été tués aujourd'hui parce qu'il n'a pas fait d'affaires
[trivia of two-dimensional array application] | [simple version] [detailed steps + code]
[teacher Zhao Yuqiang] calculate aggregation using MapReduce in mongodb
Brief introduction of realsense d435i imaging principle
大二困局(复盘)
求质数的方法
PHP笔记超详细!!!
随机推荐
【无标题】
Btrfs and ext4 - features, strengths and weaknesses
"C and pointer" - Chapter 13 function pointer 1: callback function 2 (combined with template to simplify code)
期末复习(Day5)
Obtenir et surveiller les journaux du serveur distant
[teacher Zhao Yuqiang] the most detailed introduction to PostgreSQL architecture in history
[branch and cycle] | | super long detailed explanation + code analysis + a trick game
NG Textarea-auto-resize
CAD插件的安裝和自動加載dll、arx
Altaro requirements for starting from backup on Hyper-V
Source insight operation manual installation trial
期末复习(DAY6)
Sophomore dilemma (resumption)
2022.7.2 模拟赛
2022.6.30DAY591
牛客网 JS 分隔符
[teacher Zhao Yuqiang] calculate aggregation using MapReduce in mongodb
pytorch 搭建神经网络最简版
[teacher Zhao Yuqiang] Cassandra foundation of NoSQL database
【一起上水硕系列】Day 10