给定的代码提供正确的输出但超过了时间限制,我不知道如何优化它。我知道它具有O(n ^ 2)复杂度,但我无法接近优化它。即使是一些提示也会受到赞赏。
问题是Question
import java.util.*;
import java.io.*;
class Alpha{
public static void main(String args[]) throws IOException
{
int n=0,i=0,x=-1,y=-1,sum=0,m1,m2;
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n=Integer.parseInt(st.nextToken());
Stack<Integer> stk=new Stack<>();
long arr[] = new long[n];
String str[]=br.readLine().split(" ");
for(i=0;i<n;i++)
{
arr[i]=Long.parseLong(str[i]);
}
for(i=n-1;i>=0;i--)
{
x=-1;
y=-1;
for(int j=i-1;j>=0;j--)
{
if(arr[j]>arr[i])
{
x=j+1;
break;
}
}
stk.push(x);
for(int j=i+1;j<n;j++)
{
if(arr[j]>arr[i])
{
y=j+1;
break;
}
}
stk.push(y);
}
while(!stk.isEmpty())
{
m1=stk.peek();
stk.pop();
m2=stk.peek();
stk.pop();
sum=m1+m2;
System.out.print(sum+" ");
}
}
}