第一题尖峰数组:
数组B是数组A的子数组,尖峰数组B满足两个条件:
B.length>=3
B[0]<B[1]<...<B[k-1]<B[k]>B[k+1]>...B[B.length-1]
求数组A中最长的尖峰数组的长度。
我没想到动规,写的代码只能通过45%,是边界条件有问题吗?
求大佬指点
import java.util.*; public class Main{ public static void main(String[] args){ Scanner s=new Scanner(System.in); int length=s.nextInt(); int[] a=new int[length]; int i=0; while(s.hasNext()){ a[i++]=s.nextInt(); } int j=0; int res=0; while(j<length-2){ int lnums=0; int rnums=0; int k=j; for(k=j;k<length-1;k++){ if(a[k]<a[k+1]) lnums++; else break; } int m=k+1; for(m=k+1;m<length;m++){ if(a[m]<a[m-1]) rnums++; else break; } j=m-1; if(lnums==0||rnums==0) continue; res=Math.max(res, lnums+rnums+1); } System.out.println(res); } }
全部评论
(1) 回帖