从一个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