《leetCode php》獲取最大的面積

2021-09-28 11:34:03 字數 1049 閱讀 4827

給出乙個只包含0和1的二維矩陣,找出最大的全部元素都是1的長方形區域,返回該區域的面積。

思路:原想的是記下每個點的長度和高度就行了,然後相乘。但是想想下面的行需要知道上面的行開始的節點是否有用,所以要記下每個節點所在的連續線上最左邊開始的位置是**。然後用右邊減去即可。

<?php

function maximalrectangle($arrmatrix)

$rows = count($arrmatrix);

$cols = count($arrmatrix[0]);

//想要求面積有三個值,左右及高度

$arrheight = array();//儲存每個列的高度,出現0,就從0再開始

$arrleft = array();//儲存每個行的連續左開始,各個行比較,只儲存最大的

$arrright = array();//儲存每個行的連續右結束,各個行比較,只儲存最小的

for ($i = 0; $i < $cols; $i ++)

$curleft = 0;//當前的連續最左節點

$curright = 0;//當前的連續最右節點

$max = 0;//最大面積

foreach ($arrmatrix as $arrrow) else

}//注意這個右邊界需要逆向來獲得

for ($key = $cols - 1; $key >= 0; $key --) else

}foreach ($arrrow as $key => $value)

print json_encode($arrheight). json_encode($arrleft) . json_encode($arrright) . "\n";

}return $max;

}$arr = [

[0,1,1,1,0],

[1,0,1,0,0],

[1,0,0,0,0],

];$ret = maximalrectangle($arr);

print $ret;

《leetCode php》分割鍊錶

給出乙個鍊錶和乙個值x,以x為參照將鍊錶劃分成兩部分,使所有小於x的節點都位於大於或等於x的節點之前。兩個部分之內的節點之間要保持的原始相對順序。例如 給出1 4 3 2 5 2和x 3,返回1 2 2 4 3 5 class node function partition head,x else ...

《leetCode php》鍊錶內部部分反轉

將乙個鍊錶m位置到n位置之間的區間反轉,要求使用原地演算法,並且在一次掃瞄之內完成反轉。例如 給出的鍊錶為1 2 3 4 5 null,m 2 n 4,返回1 4 3 2 5 null.注意 給出的m,n滿足以下條件 1 m n 鍊錶長度 class node function reversebet...

《leetCode php》查詢字串

給出乙個二維字元陣列和乙個單詞,判斷單詞是否在陣列 現,單詞由相鄰單元格的字母連線而成,相鄰單元指的是上下左右相鄰。同一單元格的字母不能多次使用。例如 給出的字元陣列 abce sfcs adee 單詞 abcced 返回 true,單詞 see 返回 true,單詞 abcb 返回 false.f...