public int[] join(int[] arr1,int[] arr2){ int[] joinArr=new int[arr1.length + arr2.length]; int j=0,k=0; for(int i=0;i<joinArr.length;i++){ if(j==arr1.length){ joinArr[i]=arr2[k]; } else if(k==arr2.length){ joinArr[i]=arr1[j]; } else if(arr1[j]>arr2[k]){ joinArr[i]=arr1[j]; j++; } else{ joinArr[i]=arr2[k]; k++; } } return joinArr; }
Testcase1参数
{100,90,80,70,60} {105,95,85,75,65}
{100,90,80,70,60}
{105,95,85,75,65}
Testcase1实际答案
{105,100,95,90,85,80,75,70,65,60}
Testcase1预期答案
Testcase2参数
{100,90,80,70,60} {105}
{105}
Testcase2实际答案
{105,100,100,100,100,100}
Testcase2预期答案
{105,100,90,80,70,60}
当我运行Testcase2时,它没有给出预期的答案,我该如何解决此问题?
尝试这种方式:
public static int[] join(int[] arr1,int[] arr2){ int[] joinArr=new int[arr1.length + arr2.length]; int i=0,j=0,k=0; while(i<arr1.length && j<arr2.length){ // coping from both the array while one of them is exhausted if( arr1[i]>arr2[j]){ joinArr[k++]=arr1[i++]; // coping from arr1 and update the index i and k. }else if(arr1[i]<arr2[j]){ joinArr[k++]=arr2[j++]; // coping from arr2 and update the index j and k. }else{ joinArr[k++]=arr2[j++]; // coping from any of arr1 or arr2 and update the index i,j and k. i++; } } if(i<arr1.length){ // coping from the array arr1 since arr2 is exhausted while(i<arr1.length ){ joinArr[k++]=arr1[i++]; } } if(j<arr2.length){ // coping from the array arr2 since arr1 is exhausted while(j<arr2.length ){ joinArr[k++]=arr2[j++]; } } return Arrays.copyOf(joinArr, k); }