标签:
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 mand n respectively.
题目大概的意思就是给出两个已经排序好的数组,合并这两个数组并要求仍然有序。
1 class Solution { 2 public: 3 void merge(int A[], int m, int B[], int n) { 4 int i,j,k; 5 for(k=m+n-1,i=m-1,j=n-1;k>=0;k--){ 6 if((A[i]>B[j]||j<0)&&(i>=0)){ 7 A[k]=A[i--]; 8 }else{ 9 A[k]=B[j--]; 10 } 11 } 12 } 13 };
代码比较简单,简单的说一下思路,
新数组的长度是m+n,从新数组的最后一个元素开始循环插入数组
if((A[i]>B[j]||j<0)&&(i>=0)) 这句代码可以这样理解,对应着两种情况:
情况一 如果数组A当前下标的元素大于数组B当前下标的元素并且数组A没有循环结束
情况二 如果数组B的元素已经循环完而数组A的元素还没有循环完
这两种情况下就将元素保存到新的数组A中。
标签:
原文地址:http://www.cnblogs.com/xiaoysec/p/4420480.html