您的位置:首页 > 其它

*[Lintcode]Merge Sorted Array II

2016-02-21 23:45 211 查看
Merge two given sorted integer array A and B into
a new sorted integer array.

与上一道类似

class Solution {
/**
* @param A and B: sorted integer array A and B.
* @return: A new sorted integer array
*/
public int[] mergeSortedArray(int[] A, int[] B) {
int[] res = new int[A.length + B.length];

int indexA = 0, indexB = 0;
int indexR = 0;

while(indexA < A.length && indexB < B.length) {
if(A[indexA] > B[indexB]) {
res[indexR++] = B[indexB++];
}
else {
res[indexR++] = A[indexA++];
}
}

while(indexA < A.length) res[indexR++] = A[indexA++];
while(indexB < B.length) res[indexR++] = B[indexB++];
return res;
}
}

优化:如果一个数组很长,一个数组很短,这种情况下,首先拷贝长数组到结果数组中,然后对短数组的每个值在长数组中找到相应位置插入。时间复杂度仍为O(n)。继续优化的话,可以在寻找插入位置时采用二分查找法等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode