【发布时间】:2020-09-09 03:47:42
【问题描述】:
我正在练习 Hackerrank 中的程序,我尝试的第一个 Hard 问题在几个测试用例中遇到了 Time Limit 错误。这对我来说并不是什么新鲜事,过去在编码评估测试中发生过很多次。但是,我看不到如何进一步优化它。我需要有关优化当前问题的帮助,有人请向我解释我应该做什么才能自己进行优化(对于初学者来说,至少我可以通过 Hackerranks 中的基本编码测试时间限制和 TCS 等评估考试)。
这里是 Hackerrank 问题的链接:https://www.hackerrank.com/challenges/crush/problem
这是我的解决方案:
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
static long arrayManipulation(int n, int[][] queries, int m) {
long arr[]= new long[n];
long ans=0;
for(int i=0;i<n;i++) //initializing zero-array (Is this necessary?)
arr [i]=0;
for(int i=0;i<m;i++) // for each operation
{
for(int j=queries[i][0];j<=queries[i][1];j++) //add given k value from index a and b
{
arr[j]=arr[j]+ queries[i][2];
}
}
Arrays.sort(arr);
return arr[n-1];
}
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int n=sc.nextInt(); //zero-array length
int m=sc.nextInt(); // no of operations
int queries[][]=new int[m][3];
for(int i=0;i<m;i++)
{
for(int j=0;j<2;j++)
{
queries[i][j]=sc.nextInt();
queries[i][j]-=1; //-1 cause the problem specified 1-index so I'm subtracting 1 from 1st 2 inputs
}
queries[i][2]=sc.nextInt();
}
long result = arrayManipulation(n, queries,m);
System.out.println(result);
// TODO Auto-generated method stub
}
}
【问题讨论】:
标签: java optimization