LeetCode刷题13-太阳能板最大面积
package com.example.demo.leetcode.case202208; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors; /** * 功能描述 * * @author ASUS * @version 1.0 * @Date 2022/8/6 */ public class Main2022080609 { /* 给航天器一侧加装长方形和正方形的太阳能板(图中的斜线区域) 需要先安装两个支柱(图中的黑色竖条) 再在支柱的中间部分固定太阳能板 但航天器不同位置的支柱长度不同 太阳能板的安装面积受限于最短一侧的那支支柱的长度 现提供一组整型数组的支柱高度数据 假设每个支柱间的距离相等为一个单位长度 计算如何选择两根支柱可以使太阳能板的面积最大
输入描述 10,9,8,7,6,5,4,3,2,1 注释,支柱至少有两根,最多10000根,能支持的高度范围1~10^9的整数 柱子的高度是无序的 例子中的递减是巧合 输出描述 可以支持的最大太阳板面积:(10m高支柱和5m高支柱之间) 25 示例1 输入 10,9,8,7,6,5,4,3,2,1 输出 25 备注 10米高支柱和5米高支柱之间宽度为5,高度取小的支柱高度也是5 面积为25 任取其他两根支柱所能获得的面积都小于25 所以最大面积为25 */ public static void main(String[] args) { // 获取输入信息 Scanner scanner = new Scanner(System.in); // 柱子的高度是无序的 从小到大排序 List<Integer> list = Arrays.asList(scanner.nextLine().split(",")) .stream() .sorted(Comparator.comparingInt(Integer::parseInt)) .map(Integer::valueOf) .collect(Collectors.toList()); // 枚举 遍历求最大面积 int area = 0; for (int i = 0; i < list.size(); i++) { for (int j = i + 1; j < list.size(); j++) { // list从小到大排序过得 int newAarea = Math.multiplyExact(list.get(i), (j - i)); if (newAarea >= area) { area = newAarea; } } } System.out.println(area); } }
本文来自博客园,作者:chch213,转载请注明原文链接:https://www.cnblogs.com/chch213/p/16558026.html