letCode第三天-保持城市天际线

题目描述:
在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。

最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。

建筑物高度可以增加的最大总和是多少?
思路:
将二维数组的行最大值和列最大值存入两个新数组,for循环遍历数组行最大值和列最大值Math.min()-每一个的值
代码:

/**
 * @param {number[][]} grid
 * @return {number}
 */
var maxIncreaseKeepingSkyline = function(grid) {
    var myGrid=grid;
	var arrayRow=[];
	var arrayCol=[];
	var count=0;
	for (var i=0;i<myGrid.length;i++) {
		arrayRow[i]=Math.max.apply(null,myGrid[i])
        arrayCol[i]=myGrid[0][i]
		for(var j=0;j<myGrid[0].length-1;j++)
		{
            
			if(arrayCol[i]<=myGrid[j+1][i])
			{
				arrayCol[i]=myGrid[j+1][i]
			}
           
		}
		
	}
	for ( i=0;i<myGrid.length;i++){
		for( j=0;j<myGrid[0].length;j++){
         let num = Math.min(arrayRow[i], arrayCol[j]) - myGrid[i][j]
         count += num
    }
	}
	return count;
};

总结:学到了数组Math.min()和Math.max()以及apply原型
emmmmmmmm,还有小半天,加油呗!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值