您的位置:首页 > 其它

88. Merge Sorted Array

2016-05-26 15:10 309 查看

88. Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

Analysis:

程序还是写的规范一点好,准确易懂。

比如

i=5;
nums1(i-1)=nums2(--i);


不同的编译器可能编译结果不一样吧。

Source Code(C++):

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int merge_index = m+n-1, nums1_index=m-1, nums2_index=n-1;
while(nums1_index>=0 && nums2_index>=0) {
nums1.at(merge_index--) = nums1.at(nums1_index)>nums2.at(nums2_index) ? nums1.at(nums1_index--):nums2.at(nums2_index--);//注意等式先运算右边再运算左边
}
while(nums1_index>=0) {
nums1.at(merge_index--) = nums1.at(nums1_index--);
}
while(nums2_index>=0) {
nums1.at(merge_index--) = nums2.at(nums2_index--);
}
}
};

int main() {
Solution sol;
vector<int> nums1(9), nums2;
int m=5, n=4;
nums1.at(0)=1;
nums1.at(1)=3;
nums1.at(2)=5;
nums1.at(3)=7;
nums1.at(4)=9;
nums2.push_back(2);
nums2.push_back(4);
nums2.push_back(6);
nums2.push_back(7);
sol.merge(nums1, m, nums2, n);
for (int i=0; i<nums1.size(); i++) {
cout << nums1.at(i);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: