[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支

柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度

不同,太阳能板的安装面积受限于最短一侧的那根支柱长度。如图:

现提供一组整形数组的支柱高度数据,假设每根支柱间距离相等为 1 个单位长度,计算如

何选择两根支柱可以使太阳能板的面积最大。

输入描述:

10,9,8,7,6,5,4,3,2,1

注:支柱至少有 2 根,最多 10000 根,能支持的高度范围 1~10^9 的整数。柱子的高

度是无序的,例子中递减只是巧合。

输出描述:

可以支持的最大太阳能板面积:(10 米高支柱和 5 米高支柱之间)

25

补充说明:10 米高支柱和 5 米高支柱之间宽度为 5,高度取小的支柱高也是 5,面积为 25。任取其

他两根支柱所能获得的面积都小于 25。所以最大的太阳能板面积为 25。

示例 1

输入:

10,9,8,7,6,5,4,3,2,1

输出:

25

题解:

假设取横坐标是i,j的两个支柱,对应的竖条长度就是a[i],a[j],那么面积就是(j-i)*Math.min(a[i],a[j])

那么直接双循环,获取到最大值就可以了。

java 复制代码
import java.util.Scanner;

public class Aircraft {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] lengthArray = sc.nextLine().split(",");

        int max = 0;
        for (int i = 0; i < lengthArray.length; i++) {
            for (int j = i + 1; j < lengthArray.length; j++) {
                max = Math.max(max, (j - i) * Math.min(Integer.valueOf(lengthArray[i]), Integer.valueOf(lengthArray[j])));
            }
        }

        System.out.println(max);
    }
}
相关推荐
塔中妖2 天前
【华为OD】分割数组的最大差值
数据结构·算法·华为od
塔中妖3 天前
【华为OD】数字游戏
算法·游戏·华为od
熊文豪4 天前
【华为OD】找出通过车辆最多颜色
算法·华为od
塔中妖4 天前
【华为OD】环中最长子串2
算法·华为od
熊文豪4 天前
【华为OD】区块链文件转储系统
算法·华为od·区块链
塔中妖4 天前
【华为OD】Linux发行版的数量
linux·算法·华为od
熊文豪4 天前
【华为OD】阿里巴巴找黄金宝箱
算法·华为od
塔中妖4 天前
【华为OD】5G网络建设
网络·5g·华为od
塔中妖5 天前
【华为OD】查找接口成功率最优时间段
算法·链表·华为od
塔中妖5 天前
【华为OD】最大子矩阵和
算法·华为od·矩阵