Leetcode 動態規劃

動態規劃:

72.?Edit Distance

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));for (int i = 0; i <= word1.size(); i++) dp[i][0] = i;for (int j = 0; j <= word2.size(); j++) dp[0][j] = j;for (int i = 1; i <= word1.size(); i++) {for (int j = 1; j <= word2.size(); j++) {if (word1[i - 1] == word2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];}else {dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])) + 1;}}}return dp[word1.size()][word2.size()];}
};

這里的增的功能用另一個刪來代替

647.?Palindromic Substrings

class Solution {
public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int res = 0;for(int i=s.size()-1; i>=0; i--){for(int j=i; j<s.size(); j++){if(s[i] == s[j]){if(j-i<= 1){res++;dp[i][j] = true;}else if(dp[i+1][j-1]){res++;dp[i][j] = true;}}}}return res;}
};

1.dp[i][j]這里要設置為在范圍[i,j]范圍內是否是回文串

2.范圍,因為這里依賴于dp[i+1][j-1]所以一個從大到小,一個從小到大

(完全看答案的,之后要重新寫)

516.?Longest Palindromic Subsequence

class Solution {
public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.size(), vector<int>(s.size(), 0));for(int i=0; i<s.size(); i++) dp[i][i] = 1;for(int i=s.size()-1; i>=0; i--){for(int j=i+1; j<s.size(); j++){if(s[i] == s[j]){dp[i][j] = dp[i+1][j-1] + 2;}else{dp[i][j] = max(dp[i+1][j], dp[i][j-1]);}}}return dp[0][s.size()-1];}
};

1.初始化問題:

因為我們設定的是j=i+1, 所以會算不到i=j的時候,所以要初始化為1

2.當不等的時候,要分別看加進來i,j的情況,而不是直接dp[i][j] = dp[i-1][j-1]

二叉樹:

199.?Binary Tree Right Side View

1.BFS

class Solution {
public:vector<int> rightSideView(TreeNode* root) {queue<TreeNode*> que;vector<int> res;if(root != NULL) {que.push(root);}while(!que.empty()){int size = que.size();for(int i=0; i<size; i++){TreeNode* cur = que.front();if(i == size-1){res.push_back(cur->val);}que.pop();if(cur->left) que.push(cur->left);if(cur->right) que.push(cur->right);}}return res;}
};

2.dfs

class Solution {
public:vector<int> res;int depth = 0;vector<int> rightSideView(TreeNode* root) {traversal(root);return res;}void traversal(TreeNode* cur){if(cur == NULL) return;depth++;if(res.size() < depth){res.push_back(cur->val);}traversal(cur->right);traversal(cur->left);depth--;}
};

226.?Invert Binary Tree

1.分解問題

class Solution {
public:TreeNode* invertTree(TreeNode* root) {if(root == NULL) return NULL;TreeNode* left = invertTree(root->left);TreeNode* right = invertTree(root->right);root->left = right;root->right = left;return root;}
};

2.遍歷

class Solution {
public:TreeNode* invertTree(TreeNode* root) {traversal(root);return root;}void traversal(TreeNode* cur){if(cur == NULL) return;TreeNode* left = cur->left;cur->left = cur->right;cur->right = left;traversal(cur->left);traversal(cur->right);}
};

101.?Symmetric Tree

class Solution {
public:bool compare(TreeNode* left, TreeNode* right){if(left != NULL && right == NULL) return false;else if(left == NULL && right != NULL) return false;else if(left == NULL && right == NULL) return true;else if(left->val != right->val) return false;bool outside = compare(left->left, right->right);bool inside = compare(left->right, right->left);bool isSame = outside && inside;return isSame;}bool isSymmetric(TreeNode* root) {if(root == NULL) return true;return compare(root->left, root->right);}
};

104.?Maximum Depth of Binary Tree

1.遍歷思想

class Solution {
public:int res = 0;int depth = 0;int maxDepth(TreeNode* root) {traversal(root);return res;}void traversal(TreeNode* cur){if(cur == NULL) return;depth++;res = max(res, depth);traversal(cur->left);traversal(cur->right);depth--;}
};

2.分解問題

class Solution {
public:int maxDepth(TreeNode* root) {if(root == NULL) return 0;int left = maxDepth(root->left);int right = maxDepth(root->right);return max(left, right) +1;}
};

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

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

相關文章

grafana-zabbix基礎操作篇------導入數據源

文章目錄 一、grafana的安裝1.1、下載地址1.2、下載后導入所安裝機器1.3、yum安裝解決依賴1.4、啟動grafana1.5、查看端口是否啟用&#xff08;端口默認3000&#xff09;1.6、瀏覽器訪問 二、添加zabbix數據源2.1、導入數據源 **下一篇 我們講講構建儀表板的操作** 今天&#x…

如何在工作中利用AIGC提質增效?

引言 人工智能技術快速發展&#xff0c;以 ChatGPT 為代表的新的人工智能語言模型的出現與更迭&#xff0c;引發人們極大的興奮和關注。越來越多的企業開始將 AI 技術應用到生產流程&#xff0c;以提高工作效率和生產力。AIGC&#xff08;AI Generated Content&#xff09;是人…

UE4/UE5 照明構建失敗 “Lightmass crashed”解決“數組索引越界”

在構建全局光照時,經常會出現“Lightmass crashed”的錯誤,導致光照構建失敗。本文將分析這一問題的原因,并給出解決建議。 UE4 版本4.26 報錯如下&#xff1a; <None> Lightmass crashed: Assertion failed: (Index > 0) & (Index < ArrayNum) [File:d:\bu…

在 ubuntu 18.04 上使用源碼升級 OpenSSH_7.6p1到 OpenSSH_9.3p1

1、檢查系統已安裝的當前 SSH 版本 使用命令 ssh -V 查看當前 ssh 版本&#xff0c;輸出如下&#xff1a; OpenSSH_7.6p1 Ubuntu-4ubuntu0.7, OpenSSL 1.0.2n 7 Dec 20172、安裝依賴&#xff0c;依次執行以下命令 sudo apt update sudo apt install build-essential zlib1g…

linux 環境收集core文件步驟

Linux環境下進程發生異常而掛掉&#xff0c;通常很難查找原因&#xff0c;但是一般Linux內核給我們提供的核心文件&#xff0c;記錄了進程在崩潰時候的信息&#xff0c;在C語言類的大型項目中&#xff0c;有助于深入定位。其配置流程如下&#xff1a; 1 查看生成core文件開關是…

BOXTRADE-天啟量化分析平臺 主要功能介紹

BOXTRADE-天啟量化分析平臺 主要功能介紹 potato 數學 web 緣起 月暈而風&#xff0c;礎潤而雨 BOXTRADE-天啟量化 歡迎來到天啟量化&#xff01;這是一個專注于量化分析的網站。我們致力于為用戶提供市場行情技術指標和量化策略分析方面的優質內容和資源。 我們的使命是 做…

第4章 微服務框架主體搭建

mini商城第4章 微服務框架主體搭建 一、課題 框架搭建 二、回顧 1、整體業務功能分析 2、根據業務需求設計表結構及字段 三、目標 1、版本控制器的搭建使用 2、能獨立自主的搭建微服務框架 3、學會考慮一些公共的工具組件 4、網關模塊的應用 四、內容 第1章 版本控…

3D虛擬形象數字替身的制作及應用介紹

“虛擬數字人”這一詞匯已經深入人心。從虛擬偶像、虛擬代言人到虛擬主播、虛擬員工各種類型虛擬數字形象不斷進入公眾視野&#xff0c;由于其與Z世代的獨特親和力以及與新媒體平臺的高度適配性&#xff0c;虛擬數字人在各個領域都在呈崛起之勢&#xff0c;并且有著深度的融合&…

167. 兩數之和 II - 輸入有序數組

兩數之和 II - 輸入有序數組 給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < inde…

萬字長文·通俗易懂·一篇包掌握——輸入/輸出·文件操作(c語言超詳細系列)(二)

前言&#xff1a;Hello&#xff0c;大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;上一節我們主要學習了格式化輸入輸出的基本內容&#xff0c;這一節我們對格式化進行更加深入的了解&#xff0c;對文件概念進行介紹&#xff0c;并且對輸入、輸出與文件讀寫的基本概念…

SpringBoot統?功能處理

前言&#x1f36d; ??????SSM專欄更新中&#xff0c;各位大佬覺得寫得不錯&#xff0c;支持一下&#xff0c;感謝了&#xff01;?????? Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 本章是講Spring Boot 統?功能處理模塊&#xff0c;也是 AOP 的實戰環節&…

18-組件化開發 根組件

組件化開發 & 根組件: 1. 組件化:一個頁面可以拆分成一個個組件&#xff0c;每個組件有著自己獨立的結構、樣式、行為. 好處:便于維護&#xff0c;利于復用->提升開發效率 組件分類: 普通組件 , 根組件 2. 根組件:整個應用最上層的組件&#xff0c;包裹所有普通小組件…

智能家居(4)---火災報警線程封裝

封裝火災報警線程實現智能家居中的火災報警功能 mainPro.c&#xff08;主函數&#xff09; #include <stdio.h> #include "controlDevice.h" #include "inputCommand.h"#include <pthread.h>struct Devices *pdeviceHead NULL; …

分布式理論

CAP和BASE CAP C一致性&#xff08;Consistency&#xff09; 在分布式環境下&#xff0c;一致性是指數據在多個副本之間能否保持一致性的特征。在一致性的需求下&#xff0c;當一個系統在數據一致的狀態下執行更新操作后&#xff0c;應該保證系統的數據仍然處于一致性的狀態…

Python-迭代

1、迭代器 迭代器是一個對象&#xff0c;它可以記錄遍歷的相關信息&#xff0c;迭代器對象從集合的第一個元素開始訪問&#xff0c;直到所有的元素被訪問完結束。迭代器有兩個基本的方法&#xff1a;iter() 和 next()。我們都過命令行工具&#xff0c;了解一下python的底層迭代…

常見指令以及權限理解

常見指令以及權限理解 命令格式&#xff1a; command [-options] parameter1 parameter1 命令 選項 參數1 參數2 1.command為命令名稱&#xff0c;例如變化目錄的cd等 2.中括號[ ]實際在命令中是不存在的&#xff0c;這個中括號代表可選&#xff0c;通常選項前面會添加一個符號…

Go和Java實現模板模式

Go和Java實現模板模式 下面通過一個游戲的例子來說明模板模式的使用。 1、模板模式 在模板模式中&#xff0c;一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現&#xff0c;但調用將 以抽象類中定義的方式進行。這種類型的設計模式屬于行為型…

react-vite-antd環境下新建項目

vite 創建一個react項目 1. 安裝vite并創建一個react項目1. 我使用的 yarn安裝&#xff0c;基本配置項目名字, 框架react &#xff0c;js2. cd vite-react進入項目目錄安裝node包并啟動項目 2. 安裝引入Ant Design引入依賴&#xff08;我用的yarn&#xff0c;沒有安裝的也可以使…

視頻匯聚/視頻云存儲/視頻監控管理平臺EasyCVR添加螢石云設備詳細操作來啦!

安防視頻監控/視頻集中存儲/云存儲/磁盤陣列EasyCVR平臺可拓展性強、視頻能力靈活、部署輕快&#xff0c;可支持的主流標準協議有國標GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持廠家私有協議與SDK接入&#xff0c;包括海康Ehome、海大宇等設備的SDK等。平臺既具備傳統安…

css偽元素實現li列表圓點相連+錨點跳轉懸浮窗實現

實現效果&#xff1a; html代碼&#xff1a; <div class"sidenav"><ul class"nav-text progressbar"><!-- data-target的值對應要跳轉的模塊的id --><li data-target"module1"><div class"text">錨點…