Given arr1 & arr2, that have been sorted in descending order, output an array which appends values from both arr1 and arr2 in descending order

后端 未结 2 1767
北恋
北恋 2021-01-28 14:05
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

        
相关标签:
2条回答
  • 2021-01-28 14:19

    try this way:

    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);
    
        }
    
    0 讨论(0)
  • 2021-01-28 14:34

    You have 4 possible outcomes. In the last two outcomes, you increment the index when you take a value from arr1[j] or arr2[k]

    You have to do the same for all outcomes, otherwise you just the value you were up to repeatedly.

    BTW I suggest you

    • use the code formatter in your IDE to make your code more readable
    • use the debugger in your IDE to step through the code so you undersand what it is doing.
    0 讨论(0)
提交回复
热议问题