代碼隨想錄算法訓練營第五十三天|1143.最長公共子序列 1035.不相交的線 53. 最大子序和

文檔講解:代碼隨想錄

視頻講解:代碼隨想錄B站賬號

狀態:看了視頻題解和文章解析后做出來了

1143.最長公共子序列

class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:dp = [[0] * (len(text2) + 1) for _ in range(len(text1) + 1)]for i in range(1, len(text1) + 1):for j in range(1, len(text2) + 1):if text1[i-1] == text2[j-1]:dp[i][j] = dp[i-1][j-1] + 1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])return dp[len(text1)][len(text2)]
  • 時間復雜度:O(n^2)
  • 空間復雜度:O(n)

1. 確定dp數組的含義

dp[i] 為下標范圍為0到i+1之間,最長的自增序列的長度。

2. 確定遞推公式

因為本題規定了自增序列可以不連續,所以我們不能只和前一個元素對比,而是和所有前面的元素對比,如果大于前面的某個元素,就在那個元素的基礎上+1,當然我們要一直保留最大值。

所以dp[i] = max(dp[j] + 1, dp[i])

其中i是當前元素,j是i之前的某個元素。

3. dp數組初始化

因為我們要返回的是長度,而每個元素單獨長度已經為1了,所以所有元素都先初始化為1。

4. 確定遍歷順序

遞推公式中的j是i之前的元素下標,所以從前往后遞推。

5. 舉例

1035.不相交的線

class Solution:def maxUncrossedLines(self, nums1: List[int], nums2: List[int]) -> int:dp = [[0] * (len(nums2) + 1) for _ in range(len(nums1) + 1)]for i in range(1, len(nums1) + 1):for j in range(1, len(nums2) + 1):if nums1[i-1] == nums2[j-1]:dp[i][j] = dp[i-1][j-1] + 1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])return dp[len(nums1)][len(nums2)]
  • 時間復雜度:O(n^2)
  • 空間復雜度:O(n)

和前一題完全一樣,改個變量名直接ac了。

53. 最大子序和

class Solution(object):def maxSubArray(self, nums):dp = [0] * len(nums)dp[0] = nums[0]for i in range(1, len(nums)):dp[i] = max(dp[i-1] + nums[i], nums[i])return max(dp)
  • 時間復雜度:O(n^2)
  • 空間復雜度:O(n)

1. 確定dp數組的含義

dp[i] 為下標范圍為 0 到 i 之間的最大子序和。

2. 確定遞推公式

兩種情況:

第一種:取當前元素和上一個元素的最大子序和

第二種:不考慮之前元素,把當前元素當作起始點

通過比較這兩個值定義dp[i]的值。第二種的邏輯在于,如果當前元素的值都已經大于之前最大子序和 + 當前元素,那么之前子序和一定是負的,對于找到最大子序一定沒有幫助,那么還不如從當前元素開始另起一個子序。

3. dp數組初始化

dp[0]初始化為第一個元素的值,從第二個元素開始遍歷。

4. 確定遍歷順序

遞推公式需要之前的元素下標,所以從前往后遞推。

5. 舉例

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167809.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習入門

簡介 https://huggingface.co/是一個AI社區,類似于github的地位。它開源了許多機器學習需要的基礎組件如:Transformers, Tokenizers等。 許多公司也在不斷地往上面提交新的模型和數據集,利用它你可以獲取以下內容: Datasets : 數…

hikariCP 數據庫連接池配置

springBoot 項目默認自動使用 HikariCP ,HikariCP 的性能比 alibaba/druid快。 一、背景 系統中多少個線程在進行與數據庫有關的工作?其中,而多少個線程正在執行 SQL 語句?這可以讓我們評估數據庫是不是系統瓶頸。 多少個線程在…

基于法醫調查算法優化概率神經網絡PNN的分類預測 - 附代碼

基于法醫調查算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于法醫調查算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于法醫調查優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要:針對PNN神…

【學生成績管理】數據庫示例數據(MySQL代碼)

【學生成績管理】數據庫示例數據(MySQL代碼) 目錄 【學生成績管理】數據庫示例數據(MySQL代碼)一、創建數據庫二、創建dept(學院)表1、創建表結構2、添加示例數據3、查看表中數據 三、創建stu(學…

35.邏輯運算符

目錄 一.什么是邏輯運算符 二.C語言中的邏輯運算符 三.邏輯表達式 三.視頻教程 一.什么是邏輯運算符 同時對倆個或者倆個以上的表達式進行判斷的運算符叫做邏輯運算符。 舉例:比如去網吧上網,只有年滿十八周歲并且帶身份證才可以上網。在C語言中如果…

為什么 Flink 拋棄了 Scala

曾經紅遍一時的Scala 想當初Spark橫空出世之后,Scala簡直就是語言界的一顆璀璨新星,惹得大家紛紛側目,連Kafka這類技術框架也選擇用Scala語言進行開發重構。 可如今,Flink竟然公開宣布棄用Scala 在Flink1.18的官方文檔里&#x…

國家開放大學的學子們 練習題 走起!

試卷代號:1356 高級英語聽說(2) 參考 試題 Section One (20 points, 2 points each) Directions: Listen to the conversation and fill in the blanks with the words you hear. Write the words on the Answer Sheet The conversation will be read TWICE. M…

windows11上安裝WSL

Windows電腦上要配置linux(這里指ubuntu)開發環境,主要有三種方式: 1)在windows上裝個虛擬機(比如vmware)。缺點是vmware加載ubuntu后系統會變慢很多,而且需要通過samba來實現window…

使用Java連接Hbase

我在網上試 了很多代碼,但是大部分都不能實現,Java連接Hbase,一直報一個錯 java.util.concurrent.ExecutionException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode NoNode for /hbase/hbaseid一直也不清楚為什…

計算機組成原理。3-408

1.動態存儲和靜態存儲 2.雙端口RAM 注意:cpu通過地址線和數據線讀寫數據時,不能同時寫,但可以同時讀,也不能一邊讀一邊寫。 3.多體并行存儲器 分為高位存儲和低位存儲 小結 4.磁盤存儲器的組成 5.磁盤的性能指標 磁盤讀寫尋道…

如何對網站進行滲透測試

信息搜集 信息搜集拿到域名后獲取真實IP,如果存在CDN想辦法繞過端口掃描,針對開放的端口在獲取客戶同意的前提下進行爆破查找網站子域名,后臺目錄判斷網站的CMS 可以使用 Wappalyzer插件 whatcms 是一個可以用來確定特定網站正在使用的什么…

Vue中Slot的使用指南

目錄 前言 什么是slot? 單個slot的使用 具名slot的使用 作用域插槽 總結 前言 在Vue中,slot是一種非常強大和靈活的功能,它允許你在組件模板中預留出一個或多個"插槽",然后在使用這個組件的時候動態地填充內容。這…

TSINGSEE青犀智能分析網關道路積水識別AI算法方案

在各處的街道、路口等區域,及時發現道路積水問題,可以大大減少城市管理部門壓力,及時處理,減少交通事故與人員摔倒事故。通過道路積水AI算法,能有效提高城市管理部門效率,優化城市管理方式。 那么&#xff…

【Web】PhpBypassTrick相關例題wp

目錄 ①[NSSCTF 2022 Spring Recruit]babyphp ②[鶴城杯 2021]Middle magic ③[WUSTCTF 2020]樸實無華 ④[SWPUCTF 2022 新生賽]funny_php 明天中期考,先整理些小知識點冷靜一下 ①[NSSCTF 2022 Spring Recruit]babyphp payload: a[]1&b1[]1&b2[]2&…

NLP的使用

參考: Apache openNLP 簡介 - 鏈滴 (ld246.com) opennlp 模型下載地址:Index of /apache/opennlp/models/ud-models-1.0/ (tencent.com) OpenNLP是一個流行的開源自然語言處理工具包,它提供了一系列的NLP模型和算法。然而,Open…

【模擬開關CH440R】2022-1-20

資料模擬開關CH440芯片手冊 - 百度文庫 ch440R回來了,導通usb設備沒問題,降壓不影響。但是我發現個嚴重的問題,我的電路是直接通過4067控制ch440r接地,低電平,使能三個線路連一起的,郵箱的圖您看看&#xf…

N-134基于java實現捕魚達人游戲

開發工具eclipse,jdk1.8 文檔截圖&#xff1a; package com.qd.fish;import java.awt.Graphics; import java.io.File; import java.util.ArrayList; import java.util.List;import javax.imageio.ImageIO;public class Fishes {//定義一個集合來管理魚List<Fish> fish…

五種多目標優化算法(NSDBO、NSGA3、MOGWO、NSWOA、MOPSO)求解微電網多目標優化調度(MATLAB代碼)

一、多目標優化算法簡介 &#xff08;1&#xff09;非支配排序的蜣螂優化算法NSDBO 多目標應用&#xff1a;基于非支配排序的蜣螂優化算法NSDBO求解微電網多目標優化調度&#xff08;MATLAB&#xff09;-CSDN博客 &#xff08;2&#xff09;NSGA3 NSGA-III求解微電網多目標…

應用場景丨社區燃氣管網監測系統建設

燃氣作為現代社會的重要能源&#xff0c;燃氣被廣泛應用于居民生活、工業生產、商業服務等領域。然而&#xff0c;燃氣泄漏事故時有發生&#xff0c;不僅給人們的生命財產安全帶來嚴重威脅&#xff0c;也給燃氣行業的發展帶來不良影響。因此&#xff0c;對于燃氣管道的監測和管…

給虛擬機配置靜態id地址

1.令人頭大的原因 當連接虛擬機的時候 地址不一會就改變&#xff0c;每次都要重新輸入 2.配置虛擬機靜態id地址 打開命令窗口執行 : vim /etc/sysconfig/network-scripts/ifcfg-ens33 按下面操作修改 查看自己子網掩碼 3.重啟網絡 命令行輸入 systemctl restart netwo…