今日头条后台第二题

通过了90

其实不用维持一个dp数组,只是懒得改了

public static void main(String[] args) {

    Scanner in = new Scanner(System.in); int N = in.nextInt(); int[] nums = new int[N]; for (int i = 0; i < N; i++) {

        nums[i] = in.nextInt();

    } int result = 0; int[] dp=new int[N+1];

    dp[0]=0; int maxValue=0; int minTail=0;// int maxTailSum=0; int maxTailValue=0; if(nums.length>0) {

        dp[1] = nums[0] * nums[0];

        maxValue=dp[1];

        minTail=nums[0];

        maxTailSum=nums[0];

        maxTailValue=minTail*maxTailSum; for(int i=2;i<=N;i++){ if(minTail>nums[i-1]){

                minTail=nums[i-1];

                maxTailSum=0; for(int j=i-1;j>=0;j--){ if(nums[j]>=minTail){

                        maxTailSum+=nums[j];

                    }else { break;

                    }

                }

                maxTailValue=minTail*maxTailSum;

            }else{

                maxTailSum+=nums[i-1];

                maxTailValue=minTail*maxTailSum; int temp=0; int mintemp=nums[i-1]; for(int j=i-1;j>=0;j--){ if(mintemp>=minTail){

                        mintemp=Math.min(mintemp,nums[j]);

                        temp+=nums[j]; if(maxTailValue<temp*mintemp){

                            minTail=mintemp;

                            maxTailSum=temp;

                            maxTailValue=minTail*maxTailSum;

                        }

                    }else { break;

                    }

                }

            }

            dp[i]=Math.max(Math.max(maxTailValue,maxValue),dp[i-1]);

        }

    }



    System.out.print(dp[N]);

}
#字节跳动#
全部评论

相关推荐

2024-12-13 05:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务