给定arr1&arr2,已按降序排序,输出一个数组,该数组按降序顺序追加arr1和arr2的值

public int[] join(int[] arr1,int[] arr2){ int[] joinArr=new int[arr1.length + arr2.length]; int j=0,k=0; for(int i=0;iarr2[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时,它没有给我预期的答案,我怎么能解决这个问题?

试试这种方式:

 public static int[] join(int[] arr1,int[] arr2){ int[] joinArr=new int[arr1.length + arr2.length]; int i=0,j=0,k=0; while(iarr2[j]){ joinArr[k++]=arr1[i++]; // coping from arr1 and update the index i and k. }else if(arr1[i] 

您有4种可能的结果。 在最后两个结果中,当您从arr1[j]arr2[k]获取值时增加索引

你必须为所有结果做同样的事情,否则你只需要重复的价值。

顺便说一下,我建议你

  • 在IDE中使用代码格式化程序,使代码更具可读性
  • 使用IDE中的调试器来逐步执行代码,以便了解它正在做什么。