第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

動態(tài)規(guī)劃算法:查找數(shù)組中最長上升子序列長度【leetcode-300】PHP

標(biāo)簽:
PHP 算法

最长上升子序列

动态规划问题的解决需要找到重叠子问题和最优子结构,这个最长上升子序列问题,就是要找到i位置的数的上升子序列的长度,需要找到i之前的数j,即从位置0到i的区间里面的最长上升子序列的长度,如果比i位置的元素值小,那么加1就是i位置的最长子序列。


class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function lengthOfLIS($nums) {
        $count = count($nums);
        //空数组的最长子序列长度是0
        if($count == 0){
            return 0;
        }
        //初始每个位置的最长子序列长度是1
        $lis = [];
        foreach($nums as $k=>$val){
            $lis[$k] = 1;
        }
		//从i=1个位置,考察最长上升子序列
        for($i=1;$i<$count;$i++){
            $max_flag = 0;	//是否在[0,i)区间里面找到比i的值小的值。
            $max = 1;
	        //在[0,i)区间里面找到i位置的最长上升子序列长度
	        //再根据之前找到的最长上升子序列长度,找到现在的最长上升子序列长度
	        //上面就是重叠子问题,通过自底向上的方式,解决问题,就是动态规划。
            for($j=0;$j<$i;$j++){
	            //如果位置j的值小于当前位置i的值
                if($nums[$j] < $nums[$i] ){
	                //当前的最长上升子序列长度和位置j的最长上升子序列长度的最大值
	                //附件介绍:当前位置i的最长上升子序列长度=1,还在计算中。
                    $max = max($max,$lis[$j]);	
                    //$max就是i前面的最长上升子序列
                    $max_flag = 1;
                }
				//如果找到了比nums[$i]小的值,那么就需要位置i的最长上升子序列更新
                if($max_flag == 1){
                    $lis[$i] = $max +1;
                }

            }
            //内层for循环完成之后,就找到位置i的最长上升子序列的长度
        }
		//最后返回最大的,就是数组中,最长上升子序列的长度
        return max($lis);
    }
}

也可以简化为这样

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function lengthOfLIS($nums) {
        $count = count($nums);
        if($count == 0){
            return 0;
        }
        $lis = [];
        foreach($nums as $k=>$val){
            $lis[$k] = 1;
        }

        for($i=1;$i<$count;$i++){
    
            for($j=0;$j<$i;$j++){
                if($nums[$j] < $nums[$i] ){
                //直接保存到lis[$i],记录位置i最长上升子序列的长度
                    $lis[$i] = max($lis[$i],$lis[$j]+1);
                    
                }
                
            }
        }

        //找到数组中最大的数
        return max($lis);
    }
}
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消