leetcodeは2つの秩序配列c++を結合する
1296 ワード
2つの配列を結合
2つの秩序整数配列nums 1およびnums 2が与えられ、nums 2がnums 1に結合され、num 1が秩序配列になる.
説明:
初期化nums 1およびnums 2の要素数は、それぞれmおよびnである.nums 1にはnums 2の要素を保存するのに十分な空間(空間サイズがm+n以上)があると仮定できます.例:
入力:
解法1:自分で並べ替えを書く
解法2:内蔵のソート関数で
2つの秩序整数配列nums 1およびnums 2が与えられ、nums 2がnums 1に結合され、num 1が秩序配列になる.
説明:
初期化nums 1およびnums 2の要素数は、それぞれmおよびnである.nums 1にはnums 2の要素を保存するのに十分な空間(空間サイズがm+n以上)があると仮定できます.例:
入力:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
: [1,2,2,3,5,6]
解法1:自分で並べ替えを書く
class Solution {
public:
void merge(vector& nums1, int m, vector& nums2, int n) {
int sum=m+n;
int pos=0;// nums2 nums1
if(n<1) ;// nums2
else
{
for(int i=0;i=m)
{
for(int k=nums1.size()-1;k>i;k--)//
{
nums1[k]=nums1[k-1];
}
nums1[i]=nums2[pos];//
pos++;
n--;
m++;
}
}
}
}
};
解法2:内蔵のソート関数で
class Solution {
public:
static bool cmp(const int &a,const int &b)
{
return a& nums1, int m, vector& nums2, int n) {
int sum=m+n;
int k=0;
for(int i=m;i