我有两个数组 nums1 和 nums2,其中元素为 m 和 n。nums1 数组具有大于或等于“m+n”的额外空间......用于添加 nums2 元素。 我首先将 nums2 中的元素添加到 nums1。然后对它进行排序。我收到“ArrayIndexOutOFBoundsException”。
class Solution
{
public void merge(int[] nums1, int m, int[] nums2, int n)
{
int index=nums1.length-1;
int temp;
for(int i=nums2.length-1;i>=0;i--)
{
nums1[index--]=nums2[i];
}
for(int i=0;i<nums1.length;i++)
{
for(int j=i+1;j<nums1.length;j++)
{
if(nums1[i]>nums1[j])
{
temp=nums1[i];
nums1[i]=nums1[j];
nums1[j]=temp;
}
}
}
for(int j=0;j<nums1.length;j++)
{
System.out.print(nums2[j]+" ");
}
}
}
最佳答案
与您的 for 语句相关的问题
for (int i = nums2.length -1; i >= 0; i--){
nums1[index--] = nums2[i];// if nums2.length longer than nums1 there will be exception
}
结束,你没有合并它,而是将 nums2 写在 nums1 上 如果您确定 nums1 有足够的大小,则必须将 i 添加到索引;
for (int i = nums2.length -1; i >= 0; i--){
nums1[index +i] = nums2[i];
}
关于java - 合并排序数组中的 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60802292/