国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

猿創(chuàng)征文 |【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(四)

這篇具有很好參考價(jià)值的文章主要介紹了猿創(chuàng)征文 |【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(四)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??個(gè)人主頁(yè):一二三o-0-O的博客
??技術(shù)方向:C/C++客戶端資深工程師(直播+音視頻剪輯)
?????作者簡(jiǎn)介:數(shù)據(jù)結(jié)構(gòu)算法與音視頻領(lǐng)域創(chuàng)作者
?? 系列專欄:??途W(wǎng)面試必刷
??專欄目標(biāo):幫助伙伴們通過(guò)系統(tǒng)訓(xùn)練,掌握數(shù)據(jù)結(jié)構(gòu)與算法,收獲心儀Offer
??推薦一個(gè)找工作神器:??退㈩}網(wǎng) 【面試經(jīng)驗(yàn)|實(shí)習(xí)招聘內(nèi)推,求職就業(yè)一戰(zhàn)解決】
??如果對(duì)您有幫助的話,歡迎點(diǎn)贊??收藏??,關(guān)注不迷路

【算法入門(mén)必刷】數(shù)據(jù)結(jié)構(gòu)-棧篇系列文章:
【算法入門(mén)必刷】數(shù)據(jù)結(jié)構(gòu)-棧(一)
【算法入門(mén)必刷】數(shù)據(jù)結(jié)構(gòu)-棧(二)
【算法入門(mén)必刷】數(shù)據(jù)結(jié)構(gòu)-棧(三)
【算法入門(mén)必刷】數(shù)據(jù)結(jié)構(gòu)-棧(四)
【算法入門(mén)必刷】數(shù)據(jù)結(jié)構(gòu)-棧(五)

【算法入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp篇系列文章:
【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(一)
【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(二)
【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(三)

前言

開(kāi)啟刷題,請(qǐng)點(diǎn)擊右邊鏈接進(jìn)行跳轉(zhuǎn)點(diǎn)擊這里

猿創(chuàng)征文 |【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(四),# 牛客網(wǎng)面試必刷,算法,動(dòng)態(tài)規(guī)劃,職場(chǎng)和發(fā)展,面試,最長(zhǎng)上升子序列

算法入門(mén)刷題訓(xùn)練

題目AB37:最長(zhǎng)上升子序列(一)

題目分析

描述
給定一個(gè)長(zhǎng)度為 n 的數(shù)組 arr,求它的最長(zhǎng)嚴(yán)格上升子序列的長(zhǎng)度。
所謂子序列,指一個(gè)數(shù)組刪掉一些數(shù)(也可以不刪)之后,形成的新數(shù)組。例如 [1,5,3,7,3] 數(shù)組,其子序列有:[1,3,3]、[7] 等。但 [1,6]、[1,3,5] 則不是它的子序列。
我們定義一個(gè)序列是 嚴(yán)格上升 的,當(dāng)且僅當(dāng)該序列不存在兩個(gè)下標(biāo) i 和 j 滿足 i<j 且 arr i ≥ arr j.

這道題目與上一篇【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(三)中練習(xí)的連續(xù)子數(shù)組最大和有個(gè)不同就是,要求的子數(shù)組不是連續(xù)的。因此可以定義動(dòng)態(tài)規(guī)劃數(shù)組dp[i] 表示以第i個(gè)數(shù)字為結(jié)尾的最長(zhǎng)連續(xù)子序列的長(zhǎng)度。從而推導(dǎo)出遞推公式:dp[i] = maxLength + 1,其中maxLength表示從下標(biāo)0到i-1中dp數(shù)組最大值(最大的連續(xù)子序列的長(zhǎng)度)。

理論準(zhǔn)備

任何算法都有相對(duì)應(yīng)的算法模板或者有規(guī)律的解題步驟。對(duì)于動(dòng)態(tài)規(guī)劃來(lái)講,做DP相關(guān)的算法題要熟練掌握下面DP解題步驟,這樣有助于在面對(duì)到各種各樣的題目時(shí)能夠提高解題效率:

DP解題步驟:

  1. 首先要確定dp數(shù)組:是一維,二維還是三維;以及下標(biāo)的含義是什么?
  2. 根據(jù)確定好的dp數(shù)組,給出遞推公式,也叫狀態(tài)轉(zhuǎn)移方程。
  3. 確定dp數(shù)組是否需要初始化,初始化為多少。
  4. 確定遍歷的順序;這一步在背包相關(guān)的DP題目中非常重要。
  5. 根據(jù)測(cè)試用例進(jìn)行驗(yàn)證

題解

具體的解決方案如下:

  1. 首先確定dp數(shù)組:是一維,二維還是三維;以及下標(biāo)的含義是什么?
// 這里使用一維dp
// dp[i] 表示以第i個(gè)數(shù)字為結(jié)尾的最長(zhǎng)連續(xù)子序列的長(zhǎng)度
vector<int> dp(n);
  1. 根據(jù)確定好的dp數(shù)組,給出遞推公式。
// 根據(jù)題目分析得出了以下遞推公式:
// dp[i] = maxLength + 1,其中maxLength表示從下標(biāo)0到i-1中dp數(shù)組最大值(當(dāng)前值之前的最大的連續(xù)子序列的長(zhǎng)度)。
int maxValue{}; 
// 求得從下標(biāo)0到下標(biāo)i-1中dp值的最大值
for(int j{};j<i;++j){
    // 當(dāng)當(dāng)前值大于v[j],才進(jìn)行dp[j]的判斷
    if(v[i] > v[j]){
        maxValue = max(maxValue,dp[j]);
    }
}
// 然后dp[i]就等于之前的最大的連續(xù)子序列的長(zhǎng)度加上當(dāng)前數(shù)值
dp[i] = maxValue + 1;
  1. 確定dp數(shù)組是否需要初始化,初始化為多少。
// 根據(jù)dp[i]的定義,子序列的最短長(zhǎng)度都是本身即1
vector<int> dp(n,1);
  1. 確定遍歷的順序;這一步在背包相關(guān)的DP題目中非常重要。
// 本題從小到大遍歷i
for(int i{1};i<n;++i){
	int maxValue{};
	// 內(nèi)部從小到大,從大到小都可以
    for(int j{};j<i;++j){
        if(v[i] > v[j]){
            maxValue = max(maxValue,dp[j]);
        }
    }    
}
  1. 根據(jù)測(cè)試用例進(jìn)行驗(yàn)證:選擇所有的測(cè)試用例帶入驗(yàn)證即可。

  2. 完整代碼如下:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    
    vector<int> v(n);
    for(int i{};i<n;++i) cin >> v[i];
    
    // dp[i] 表示以第i個(gè)數(shù)字為結(jié)尾的最長(zhǎng)連續(xù)子序列的長(zhǎng)度
    vector<int> dp(n,1);
    int result{};
    for(int i{1};i<n;++i){
        int maxValue{};
        for(int j{};j<i;++j){
            if(v[i] > v[j]){
                maxValue = max(maxValue,dp[j]);
            }
        }
        
        dp[i] = maxValue + 1;
        
        if(dp[i] > result) result = dp[i];
    }
    
    cout << result << endl;
    return 0;
}
// 64 位輸出請(qǐng)用 printf("%lld")
// 64 位輸出請(qǐng)用 printf("%lld")

當(dāng)提交成功后,會(huì)展示如下界面,那么恭喜這道題目就通過(guò)了!
猿創(chuàng)征文 |【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(四),# ??途W(wǎng)面試必刷,算法,動(dòng)態(tài)規(guī)劃,職場(chǎng)和發(fā)展,面試,最長(zhǎng)上升子序列

小結(jié)

祝愿所有的伙伴都能拿到自己心儀的Offer!??伙伴們點(diǎn)擊右邊鏈接立刻開(kāi)啟刷題吧:??汀㈩}網(wǎng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-781077.html

到了這里,關(guān)于猿創(chuàng)征文 |【算法面試入門(mén)必刷】動(dòng)態(tài)規(guī)劃-線性dp(四)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 算法自學(xué)__線性動(dòng)態(tài)規(guī)劃

    某國(guó)為了防御敵國(guó)的導(dǎo)彈襲擊,發(fā)展出一種導(dǎo)彈攔截系統(tǒng)。但是這種導(dǎo)彈攔截系統(tǒng)有一個(gè)缺陷:雖然它的第一發(fā)炮彈能夠到達(dá)任意的高度,但是以后每一發(fā)炮彈都不能高于前一發(fā)的高度。某天,雷達(dá)捕捉到敵國(guó)的導(dǎo)彈來(lái)襲。由于該系統(tǒng)還在試用階段,所以只有一套系統(tǒng),因此

    2023年04月09日
    瀏覽(16)
  • C++動(dòng)態(tài)規(guī)劃-線性dp算法

    C++動(dòng)態(tài)規(guī)劃-線性dp算法

    莫愁千里路 自有到來(lái)風(fēng) CSDN 請(qǐng)求進(jìn)入專欄? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??X 是否進(jìn)入《 C++ 專欄》? 確定 目錄 ?線性dp簡(jiǎn)介 斐波那契數(shù)列模型? 第N個(gè)泰波那契數(shù) 思路: 代碼測(cè)試: ?三步問(wèn)題 思路: 代碼測(cè)試: 最小花費(fèi)爬樓梯 思路: 代碼測(cè)試: ?路徑問(wèn)題 數(shù)字三

    2024年02月19日
    瀏覽(38)
  • 算法基礎(chǔ)復(fù)盤(pán)筆記Day10【動(dòng)態(tài)規(guī)劃】—— 線性DP

    算法基礎(chǔ)復(fù)盤(pán)筆記Day10【動(dòng)態(tài)規(guī)劃】—— 線性DP

    ? 作者主頁(yè):歡迎來(lái)到我的技術(shù)博客?? ? 個(gè)人介紹:大家好,本人熱衷于 Java后端開(kāi)發(fā) ,歡迎來(lái)交流學(xué)習(xí)哦!( ̄▽ ̄)~* ?? 如果文章對(duì)您有幫助,記得 關(guān)注 、 點(diǎn)贊 、 收藏 、 評(píng)論 ?????? ?? 您的支持將是我創(chuàng)作的動(dòng)力,讓我們一起加油進(jìn)步吧?。。???? 1. 題目

    2023年04月21日
    瀏覽(32)
  • acwing算法基礎(chǔ)之動(dòng)態(tài)規(guī)劃--線性DP和區(qū)間DP

    線性DP:狀態(tài)轉(zhuǎn)移表達(dá)式存在明顯的線性關(guān)系。 區(qū)間DP:與順序有關(guān),狀態(tài)與區(qū)間有關(guān)。 題目1 :數(shù)字三角形。 解題思路:直接DP即可, f[i][j] 可以來(lái)自 f[i-1][j] + a[i][j] 和 f[i-1][j-1] + a[i][j] ,注意 f[i-1][j] 不存在的情況(最后一個(gè)點(diǎn))和 f[i-1][j-1] 不存在的情況(第一個(gè)點(diǎn))。

    2024年02月04日
    瀏覽(21)
  • C/C++ 動(dòng)態(tài)規(guī)劃面試算法題

    https://blog.csdn.net/qq_41277628/article/details/113322136 輸入:[7,1,5,3,6,4] 輸出:5 解釋:在第 2 天(股票價(jià)格 = 1)的時(shí)候買(mǎi)入,在第 5 天(股票價(jià)格 = 6)的時(shí)候賣(mài)出,最大利潤(rùn) = 6-1 = 5 。 注意利潤(rùn)不能是 7-1 = 6, 因?yàn)橘u(mài)出價(jià)格需要大于買(mǎi)入價(jià)格;同時(shí),你不能在買(mǎi)入前賣(mài)出股票。 給定

    2024年02月07日
    瀏覽(15)
  • 猿創(chuàng)征文 |【Linux】常用命令

    猿創(chuàng)征文 |【Linux】常用命令

    ?? 博客主頁(yè): ??@不會(huì)壓彎的小飛俠 ? 歡迎關(guān)注: ?? 點(diǎn)贊 ?? 收藏 ? 留言 ? ? 系列專欄: ??Linux專欄 ? 歡迎加入社區(qū): ??不會(huì)壓彎的小飛俠 ? 人生格言:知足上進(jìn),不負(fù)野心。 ?? 歡迎大佬指正,一起學(xué)習(xí)!一起加油! command [-options] [parameter] command:命令名 [-o

    2024年01月16日
    瀏覽(56)
  • 猿創(chuàng)征文 | Shell編程【上篇】

    猿創(chuàng)征文 | Shell編程【上篇】

    目錄 1,Shell編程 1.1:簡(jiǎn)介 1.1.1:shell解釋器 1.2:快速入門(mén) 1.2.1:編寫(xiě)腳本 1.2.2:執(zhí)行shell腳本 1.3:shell變量 1.3.1:簡(jiǎn)介 1.3.2:使用變量 1.3.3:刪除變量 1.3.4:只讀變量 ?1.4:字符串 1.4.1:?jiǎn)我?hào) 1.4.2:雙引號(hào)? 1.4.3:獲取字符串長(zhǎng)度? ?1.4.4:提取子字符串 ?1.5:傳遞參數(shù) 1

    2024年02月02日
    瀏覽(24)
  • 以太坊是什么?|猿創(chuàng)征文

    以太坊是什么?|猿創(chuàng)征文

    以太坊是一個(gè)可編程、可視化、更易用的區(qū)塊鏈,它允許任何人編寫(xiě)智能合約和發(fā)行代幣。 在以太坊(Ethereum)出現(xiàn)之前,各種區(qū)塊鏈應(yīng)用的功能非常有限,例如,比特幣和其他加密貨幣都只是純粹的數(shù)字貨幣。 以太坊(Ethereum)創(chuàng)始人Vitalik Buterin將以太坊(Ethereum)設(shè)想為開(kāi)發(fā)人員

    2024年02月02日
    瀏覽(23)
  • 猿創(chuàng)征文|【HTML】標(biāo)簽學(xué)習(xí)之路

    猿創(chuàng)征文|【HTML】標(biāo)簽學(xué)習(xí)之路

    ?? 目錄 一、HTML語(yǔ)法規(guī)范 1.基本語(yǔ)法概述 2.標(biāo)簽關(guān)系 二、HTML基本結(jié)構(gòu)標(biāo)簽 1.第一個(gè)HTML頁(yè)面 2.HTML基本結(jié)構(gòu)標(biāo)簽總結(jié) 1.基本語(yǔ)法概述 html是由尖括號(hào)包圍的,列如: html 。 html標(biāo)簽通常是成對(duì)出現(xiàn)的,列如:html和/html,我們稱為 雙標(biāo)簽 。標(biāo)簽對(duì)里的第一個(gè)標(biāo)簽是開(kāi)始標(biāo)

    2024年01月16日
    瀏覽(25)
  • 猿創(chuàng)征文|ZooKeeper(偽)集群搭建

    猿創(chuàng)征文|ZooKeeper(偽)集群搭建

    前言:zookeeper作為一款分布式協(xié)調(diào)中間件,其重要性不言而喻,因此需要保證其高可用性。所以一般都會(huì)搭建zookeeper集群,今天葉秋帶領(lǐng)大家在一臺(tái)服務(wù)器上搭建偽集群。 目錄 1、 搭建要求 2、 準(zhǔn)備工作 3、 配置集群 ?4 啟動(dòng)集群 ?5 模擬集群異常 1、 搭建要求 真實(shí)的集群是

    2024年02月01日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包