输出:
maxPlateauLen = 4
startPos = 1
输出
maxPlateauLen = 1
startPos = 5
这个通过不了
输出
maxPlateauLen = 4
startPos = 15
这个我的代码通过不了
public class LongestPlateau
{
public static void main(String[] args)
{
int maxPlateauLen = 1; // max record
int maxPlateauStartPos = -1;
// Read the terrain info from command line
int[] A = new int[args.length];
for (int i = 0 ; i < args.length ; i++){
A[i] = Integer.parseInt(args[i]);
}
int curlen=1;
for (int i=1; iif (A[i]==A[i-1]){curlen++;}
else if ((A[i]-1])&&curlen>maxPlateauLen){maxPlateauLen=curlen;maxPlateauStartPos=i-curlen;curlen=0;}
else if (A[i]>A[i-1]) {curlen=1;}
}
System.out.println("maxPlateauLen = " + maxPlateauLen);
System.out.println("startPos = " + maxPlateauStartPos);
return;
}
}
该回答引用GPT,有帮助的话请帮我点个采纳
遇到A[i] < A[i-1]时,您需要将curlen重置为1,而不是0,因为在这种情况下,curlen记录的是当前的平台长度,而不是最大平台长度。
正确代码如下:
public class LongestPlateau
{
public static void main(String[] args)
{
int maxPlateauLen = 1; // max record
int maxPlateauStartPos = -1;
// Read the terrain info from command line
int[] A = new int[args.length];
for (int i = 0 ; i < args.length ; i++){
A[i] = Integer.parseInt(args[i]);
}
int curlen=1;
for (int i=1; i<A.length;i++){
if (A[i]==A[i-1]){curlen++;}
else if ((A[i]<A[i-1])&&curlen>maxPlateauLen){
maxPlateauLen=curlen;
maxPlateauStartPos=i-curlen;
curlen=1;
}
else if (A[i]>A[i-1]) {curlen=1;}
}
System.out.println("maxPlateauLen = " + maxPlateauLen);
System.out.println("startPos = " + (maxPlateauStartPos+1));
return;
}
}
顶顶