今日头条后台第二题

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

}
#字节跳动#
全部评论

相关推荐

学一下吧现在太菜了:和简历没关系,你是清华的他就要了。多投投就行了
点赞 评论 收藏
分享
天天困啊:个人建议第一点就是熟悉Redis这里不要这么写,写上Redis比较核心的技术,什么缓存一致性,雪崩穿透击穿那些,掌握cos其实不用写在专业技能里这个你做了鱼皮的这个项目面试官默认应该认为你应该懂了,鱼皮这个项目核心挺多建议多啃啃,在做一个鱼皮的微服务项目俩项目在一起比较好哦
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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