本文實(shí)例講述了PHP實(shí)現(xiàn)求連續(xù)子數(shù)組最大和問(wèn)題2種解決方法。分享給大家供大家參考,具體如下:
問(wèn)題描述
求子數(shù)組的最大和
題目描述:
輸入一個(gè)整形數(shù)組,數(shù)組里有正數(shù)也有負(fù)數(shù)。
數(shù)組中連續(xù)的一個(gè)或多個(gè)整數(shù)組成一個(gè)子數(shù)組,每個(gè)子數(shù)組都有一個(gè)和。
求所有子數(shù)組的和的最大值。要求時(shí)間復(fù)雜度為O(n)。
關(guān)于連續(xù)子數(shù)組最大和這個(gè)問(wèn)題,有兩種解法,一種是動(dòng)態(tài)規(guī)劃
解法如下:
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;}希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選