#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
vector<int>::iterator find_pos(vector<int> nums1,int t) {
int i = 0;
while (nums1[i] <= t) {
i++;
}
return nums1.begin() + i;
}
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for (int i = 0; i < n; i++) {
nums1.insert(find_pos(nums1, nums2[i]), nums2[i]);
}
}
};
int main() {
vector<int> n1 = { 1,2,3,0,0,0 };
vector<int> n2 = { 2,5,6 };
Solution s;
s.merge(n1, 3, n2, 3);
for (int i = 0; i < 6; i++) {
cout << n1[i] << endl;
}
return 0;
}
(合并两个有序数组)这个程序为什么奔了?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 猫叔大鸭梨 2021-04-16 23:44关注
如果是要将2个有序数组合并成新的有序数组,稍作修改即可
#include<iostream> #include<vector> using namespace std; class Solution { public: int find_pos(vector<int> nums1, int t) { int i = 0; while (nums1[i] <= t && nums1[i]!=0) { i++; } return i; } void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { for (int i = 0; i < n; i++) { //nums1.insert(nums1.begin() + m + i, nums2[i]); int index = find_pos(nums1, nums2[i]); nums1.insert(nums1.begin()+index, nums2[i]); } } }; int main() { vector<int> n1 = { 1,2,3,0,0,0 }; vector<int> n2 = { 2,5,6 }; Solution s; s.merge(n1, 3, n2, 3); for (int i = 0; i < 6; i++) { cout << n1[i] << endl; } return 0; }
注意第8行,当你查找n2第二个值5的位置,你会发现n1没有比5大的了,最后while循环得到的i已经超出n1数组的范围了,结果也不是你想要的。
这里就多加一个判断把第一个0作为结尾的位置。
#include<iostream> #include<vector> using namespace std; class Solution { public: vector<int>::iterator find_pos(vector<int> nums1, int t) { int i = 0; while (nums1[i] <= t) { i++; } return nums1.begin() + i; } void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { for (int i = 0; i < n; i++) { nums1.insert(nums1.begin() + m + i, nums2[i]); } } }; int main() { vector<int> n1 = { 1,2,3,0,0,0 }; vector<int> n2 = { 2,5,6 }; Solution s; s.merge(n1, 3, n2, 3); for (int i = 0; i < 6; i++) { cout << n1[i] << endl; } return 0; }
只是要合并2个数组的话,这里用不上find_pos。
改了一下第18行的代码,供你参考。
还有问题可以评论问我或者私信。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路