求数组中区间中最小数*区间所有数和的最大值

简介: 给定一个数组序列,使得区间经过如下计算的值是所有区间中最大的:区间中的最小数*区间所有数的和如[6,2,1],则求出区间为[6] 输入: 3 6 2 1输出: 36大体思路: 给定一个数组序列, 使得...

给定一个数组序列,使得区间经过如下计算的值是所有区间中最大的:区间中的最小数*区间所有数的和

如[6,2,1],则求出区间为[6]
输入:
3
6 2 1

输出:
36

大体思路:
给定一个数组序列,
使得区间经过如下计算的值是所有区间中最大的:
区间中的最小数*区间所有数的和
如[6,2,1],则求出区间为[6]
输入:
3
6 2 1
输出:
36

大体思路: 把每个数字看成最小值,
因为所有数大于0,符合条件的区间越大值越高
扫左扫右,得到边界(第一个小于arr[i]的)

最后依次判断得到答案

public class test {
    public static int function(int[] arr) {
        int len = arr.length;
        int[] sum = new int[len];
        int ans = 0;
        for (int i = 0; i < len; i++) {
            //右边界
            sum[i] = arr[i];
            for (int j = i+1; j < len; j++) {
                if (arr[j] >= arr[i]) {
                    sum[i] += arr[j];
                } else {
                    break;
                }
            }
            //左边界
            for (int j = i-1; j >= 0;j--) {
                if (arr[j] >= arr[i]) {
                    sum[i] += arr[j];
                } else {
                    break;
                }
            }
            ans = Math.max(ans,sum[i]*arr[i]);
        }
        return ans;
    }
}
目录
相关文章
|
6月前
|
算法 前端开发
最大公因数等于 K 的子数组数目
最大公因数等于 K 的子数组数目
51 0
|
6月前
和最小的K个数对
和最小的K个数对
|
算法
把数组里面数值排成最小的数
把数组里面数值排成最小的数
35 1
|
6月前
4.韩信点兵:有一个数,用3除余2;用5除余3;用7除余2,求满足条件的最小数
4.韩信点兵:有一个数,用3除余2;用5除余3;用7除余2,求满足条件的最小数
27 0
|
6月前
|
算法 测试技术 C#
【线段树】2276. 统计区间中的整数数目
【线段树】2276. 统计区间中的整数数目
|
6月前
|
算法 Java 测试技术
连号区间数
连号区间数
56 0
|
11月前
不用数组求多个数的最小值
不用数组求多个数的最小值
42 0
|
机器学习/深度学习
1210. 连号区间数
1210. 连号区间数
88 0