2020.10.30每日复习

892.三维形体的表面积

在这里插入图片描述

分析

  • 首先,一个柱体一个柱体的看,每个柱体是由:2 个底面(上表面/下表面)+ 所有的正方体都贡献了 4 个侧表面积。
  • 然后,把柱体贴合在一起之后,需要把贴合的表面积给减掉,两个柱体贴合的表面积就是 两个柱体高的最小值*2。
class Solution {
    public int surfaceArea(int[][] grid) {
    	if(grid == null || grid.length == 0) return 0;
		int res = 0;
		for(int i = 0; i < grid.length; i++) {
			for(int j = 0; j < grid.length; j++) {
				int area = grid[i][j];
				if(area > 0) {
					res += (area << 2) + 2; 
					if(i > 0) { //如果i==0,说明这是边界,没有和其他相贴的,故不用减
						res -= (Math.min(area, grid[i - 1][j]) << 1);
					}
					if(j > 0) {
						res -= (Math.min(area, grid[i][j - 1]) << 1);
					}
				}	
			}
		}
		return res;
    }
}

812.最大三角形面积

在这里插入图片描述

分析

  • 已知三个点的坐标,用海伦公式进行求解
class Solution {
    public double largestTriangleArea(int[][] points) {
		double res = 0;
		int len = points.length;
		for(int i = 0; i < len - 2; i++) {
			for(int j = i + 1; j < len - 1; j++) {
				for(int k = j + 1; k < len; k++) {
					res = Math.max(res, triangArea(points[i], points[j], points[k]));
				}
			}
		}
		return res;
    }
    public double triangArea(int[] a, int[] b, int[] c) {
    	return Math.abs(a[0] * b[1] + a[1] * c[0] + b[0] * c[1] - c[0] * b[1] - a[0] * c[1] - a[1] * b[0]) * 0.5;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值