给定已经按降序排列的arr1和arr2,输出一个数组,该数组以降序附加来自arr1和arr2的值

发布于 2021-01-29 20:00:49

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}

Testcase1实际答案

{105,100,95,90,85,80,75,70,65,60}

Testcase1预期答案

{105,100,95,90,85,80,75,70,65,60}

Testcase2参数

{100,90,80,70,60} {105}

Testcase2实际答案

{105,100,100,100,100,100}

Testcase2预期答案

{105,100,90,80,70,60}

当我运行Testcase2时,它没有给出预期的答案,我该如何解决此问题?

关注者
0
被浏览
103
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    尝试这种方式:

    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);
    
        }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看