地址:http://oj.leetcode.com/problems/merge-sorted-array/
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
参考代码:
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int pa = 0, pb = 0;
for(; pa<m && pb<n; )
{
if(A[pa]>B[pb])
{
for(int i = m; i>pa; --i)
{
A[i]=A[i-1];
}
A[pa] = B[pb];
++m;
++pb;
}
++pa;
}
while(pb<n)
{
A[m++] = B[pb++];
}
}
};
//SOLUTION TWO, which is better.class Solution {public :void merge ( int A [], int m , int B [], int n ) {if ( ! n )return ;if ( ! m ){for ( int i = 0 ; i < n ; ++ i )A [ i ] = B [ i ];return ;}int i = m - 1 , j = n - 1 ;while ( i >= 0 && j >= 0 ){if ( A [ i ] >= B [ j ])A [ i + j + 1 ] = A [ i -- ];elseA [ i + j + 1 ] = B [ j -- ];}if ( j < 0 )return ;for (; j >= 0 ; -- j )A [ j ] = B [ j ];}};
Python:
class Solution :# @param A a list of integers# @param m an integer, length of A# @param B a list of integers# @param n an integer, length of B# @return nothingdef merge ( self , A , m , B , n ):if not B or not n :return ;if not A :A = B [:]la = m - 1lb = n - 1while la >= 0 and lb >= 0 :if A [ la ] >= B [ lb ]:A [ la + lb + 1 ] = A [ la ]la -= 1else :A [ la + lb + 1 ] = B [ lb ]lb -= 1if la < 0 :while lb >= 0 :A [ lb ] = B [ lb ]lb -= 1