這篇文章主要介紹了PHP實現求連續子數組最大和問題2種解決方案,涉及php針對數組的遍曆、判斷、運算等相關操作技巧,需要的朋友可以參考下
本文執行個體講述了PHP實現求連續子數組最大和問題2種解決方案。分享給大家供大家參考,具體如下:
問題描述
求子數組的最大和
題目描述:
輸入一個整形數組,數組裡有正數也有負數。
數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。
求所有子數組的和的最大值。要求時間複雜度為O(n)。
關於連續子數組最大和這個問題,有兩種解法,一種是動態規劃
解法如下:
function getMaxSubSum($arr){ $curSum = $arr[0]; $maxSum = $arr[0]; for($i = 1; $i < count($arr); $i++){ if($curSum > 0) $curSum += $arr[$i]; else $curSum = $arr[$i]; if($curSum > $maxSum) $maxSum = $curSum; } return $maxSum;}
還有一種是掃描法
function getMaxSubSum($arr){ $curSum = 0; $maxSum = 0; for($i = 0; $i < count($arr); $i++ ){ $curSum += $arr[$i]; if($curSum <= 0) $curSum = 0; if($curSum > $maxSum) $maxSum = $curSum; } if($maxSum == 0){ $maxSum = $arr[0]; for($i = 1; $i < count($arr); $i++){ if($maxSum < $arr[$i] ) $maxSum = $arr[$i]; } } return $maxSum;}
您可能感興趣的文章:
php擷取ajax的headers方法與內容執行個體講解
Laravel中使用Queue的最基本操作教程講解
詳解Yaf架構PHPUnit整合測試方法講解