如何在Java中操作数组?

从一个1索引的零数组和一个操作列表开始,对于每个操作,我必须在两个给定索引(包括两个索引)之间为每个数组元素添加值。完成所有操作后,我必须返回数组中的最大值。但是对于大多数测试用例来说,每次都会出现错误的答案,并且对于某些测试用例来说,时限已经超出了。请帮助我解决这个问题。

我正在使用arrayManipulation函数来获取数组元素的数量并查询数组。更新功能用于更新(添加元素)数组。

import java.util.*;
import java.util.Arrays;
public class sample
{
public static void main(String args[])
{
    int maximum=0;
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int m=sc.nextInt();
    int queries[][]=new int[m][3];
    for(int x=0;x<m;x++)
    {
        for(int y=0;y<3;y++)
        {
            queries[x][y]=sc.nextInt();
        }
    }
    maximum=arrayManipulation(n,queries);
    System.out.println(maximum);

}
public static int arrayManipulation(int num,int qry[][])
{
    int a=0,b=0,k=0;
    int max=Integer.MIN_VALUE;
    int arr[]=new int[num];
    int arr2[]=new int[num];
    for(int i=0;i<num;i++)
    {
         arr[i]=0;
    }
    for(int j=0;j<qry.length;j++)
    {
        for(int kl=0;kl<qry[0].length;kl++)
        {
            a=qry[j][kl];
            b=qry[j][kl+1];
            k=qry[j][kl+2];
            break;
        }
       arr2=update(a,b,k,arr);
       int lengtharr2=arr2.length;
       max=Math.max(max,arr2[lengtharr2-1]);
    }
    return max;
}

public static int[] update(int a1,int b1,int k1,int array[])
{

    for(int i=a1;i<b1;i++)
    {
        array[i]+=k1;
    }
    Arrays.sort(array);
    return array;
}
}

输入:10表示数组元素的数量,3表示否。由a,b,k值组成的查询,其含义如下:左索引,右索引和被加数

10 3

1 5 3

4 8 7

6 9 1

我的输出:

11

预期输出:

10

xiaoxi8892 回答:如何在Java中操作数组?

在此for循环中:

for(int kl=0;k<qry[0].length;k++)
{
    a=qry[j][kl];
    b=qry[j][kl+1];
    k=qry[j][kl+2];
    break;
}

为什么在循环条件中使用两个不同的变量(kkl)?

无论如何,您应在循环中使用其他感谢k变量,因为您要更新k的值,然后在循环的每次迭代中执行k++很可能会弄乱您的输出。

请考虑以下内容:

for(int l=0;l<qry[0].length;l++)
{
    a=qry[j][kl];
    b=qry[j][kl+1];
    k=qry[j][kl+2];
    break;
}
本文链接:https://www.f2er.com/3165027.html

大家都在问