今日头条后台第二题

通过了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]);

}
#字节跳动#
全部评论

相关推荐

06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
今天投了小鹏,收到了AI面,大概会问哪些啊?
期末一定及格:总共4个部分,心理测评、行测、然后就是问岗位、对岗位的理解、过往遇到了哪些难点怎么解决,很简单,没有什么特别专业的问题,都是一些综合素质相关的
小鹏汽车AI面7人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务