给定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中的调试器来逐步执行代码,以便了解它正在做什么。