網格dp|

?

?

?

?

lc3665

class Solution {

public:
int uniquePaths(vector<vector<int>>& grid) {
const int MOD = 1'000'000'007;
int m = grid.size(), n = grid[0].size();
vector memo(m, vector(n, array<int, 2>{-1, -1})); // -1 表示沒有計算過

? ? ? ? auto dfs = [&](this auto&& dfs, int i, int j, int k) -> int {
if (i < 0 || j < 0) { // 出界
return 0;
}
if (i == 0 && j == 0) { // 到達起點
return 1;
}
int& res = memo[i][j][k]; // 注意這里是引用
if (res != -1) { // 之前計算過
return res;
}
if (grid[i][j] == 0) { // 沒有鏡子,隨便走
res = (dfs(i, j - 1, 0) + dfs(i - 1, j, 1)) % MOD;
} else if (k == 0) { // 從下邊過來
res = dfs(i - 1, j, 1); // 反射到左邊
} else { // 從右邊過來
res = dfs(i, j - 1, 0); // 反射到上邊
}
return res;
};

? ? ? ? return dfs(m - 1, n - 1, 0); // 從終點出發
}
};

?

lc563

int dfs

ret += abs(leftSum - rightSum);?

?return node->val + leftSum + rightSum;?

class Solution {

? ? int ret = 0; // 存儲最終坡度總和

public:

? ? int findTilt(TreeNode* root) {

? ? ? ? dfs(root);

? ? ? ? return ret;

? ? }

? ??

? ? // 輔助函數:返回以 node 為根的子樹的總節點和,并計算當前節點的坡度

? ? int dfs(TreeNode* node) {

? ? ? ? if (node == nullptr) return 0; // 空節點,子樹和為 0

? ? ? ??

? ? ? ? int leftSum = dfs(node->left); // 左子樹和

? ? ? ? int rightSum = dfs(node->right); // 右子樹和

? ? ? ??

? ? ? ? ret += abs(leftSum - rightSum);?

? ? ? ? return node->val + leftSum + rightSum;?

? ? }

};

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

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

相關文章

煩人的Nano 編輯器,如何退出呢?

對于不熟悉 nano 編輯器的人來說&#xff0c;它的退出方式確實有點反直覺。別擔心&#xff0c;這是幾乎所有新手都會遇到的困惑。 退出 Nano 編輯器的正確方法 記住這個黃金法則&#xff1a;ctrl鍵是你的朋友&#xff01; 1. 正常保存并退出&#xff08;最常用&#xff09; 按 …

IDM(Internet Download Managerv 6.38)破除解版下載!IDM 下載器永久免費版!提升下載速度達5倍!安裝及使用

軟件介紹 IDM&#xff08;Internet Download Manager&#xff09;是一款功能強大的 Windows 平臺專業下載加速工具&#xff0c;可加速下載速度、調度任務、續傳下載、管理文件。可使下載速度提升至普通瀏覽器的 5 倍以上&#xff0c;最高可加速 8 倍。IDM 支持 HTTP、FTP、HTTP…

學習Java29天(tcp多發多收)但是無解決客戶端啟動多個問題

180/189今天看了一些ip的東西WLAN的ip是路由器隨機分配的&#xff08;DHCP&#xff09;

Photoshop - Ps Camera Raw 濾鏡

使用Adobe Photoshop Camera Raw濾鏡對圖像進行快速和可逆的編輯。Camera Raw濾鏡將圖像拖入Photoshop工作區&#xff0c;或者點擊菜單欄-文件-打開來打開圖像。選中圖像的對應的圖層&#xff0c;點擊菜單欄-濾鏡-Camera Raw濾鏡&#xff0c;彈出Camera Raw濾鏡面板。使用Camer…

Node.js(4)—— http模塊基礎

下面我們來學nodejs中的http模塊。在此之前&#xff0c;你需要有一定的網絡知識儲備&#xff0c;能知道http&#xff0c;IP&#xff0c;端口是什么并且它們之間的關系。如果還不清楚或比較模糊&#xff0c;可以查看下面的文章&#xff1a; HTTP協議與IP 下面我們開始學習。 目…

后端去拿數據怎么拿?

簡單來說&#xff0c;Entity 和 DTO 代表了數據在不同層次和場景下的不同形態和目的。它們最根本的區別在于&#xff1a;職責和目的不同。一句話概括Entity&#xff1a;代表數據庫中的表&#xff0c;是業務邏輯的核心&#xff0c;與持久化&#xff08;數據庫&#xff09;緊密相…

從源碼角度來學習Activit的啟動流程

免責聲明&#xff1a;本文是本人的學習記錄文檔&#xff0c;有問題可以評論區指出&#xff0c;謝謝 一、從Launcher點擊桌面圖標&#xff0c;拉起app進程&#xff08;不同進程間拉組件&#xff09; 從桌面點擊icon圖標拉起進程&#xff0c;這個就涉及到很多邏輯了&#xff0c;我…

pgAdmin介紹(PostgreSQL數據庫管理軟件)數據庫客戶端、PG客戶端、PostgreSQL客戶端

文章目錄**1. 安裝 pgAdmin****1.1 下載****1.2 安裝步驟&#xff08;以 Windows 為例&#xff09;**1. **運行安裝程序**&#xff1a;雙擊下載的 .exe 文件。2. **接受協議**&#xff1a;點擊 Next&#xff0c;勾選 I accept the agreement。3. **選擇安裝路徑**&#xff1a;默…

桌面GIS軟件FlatGeobuf轉Shapefile代碼分享

桌面GIS軟件FlatGeobuf轉Shapefile代碼分享1、后端代碼分享2、前端代碼分享分享完成

【Bluedroid】A2DP Source 音頻傳輸停止流程及資源管理機制(btif_a2dp_source_stop_audio_req)

本文深入剖析Android藍牙協議棧中A2DP音頻傳輸停止流程,涵蓋從用戶請求觸發、工作線程調度、資源釋放到性能統計的全鏈路實現。通過分析btif_a2dp_source_stop_audio_req到btif_a2dp_source_audio_tx_stop_event的代碼執行路徑,揭示多線程環境下的競爭規避策略、硬件抽象層(H…

1-ruby介紹、環境搭建、運行 hello world 程序

1-ruby介紹、環境搭建、運行 hello world 程序 Ruby 簡介 Ruby 是一種開源的、面向對象的、解釋型的動態編程語言&#xff0c;由 Yukihiro “Matz” Matsumoto 于 1995 年發布。主要特點包括&#xff1a; 純面向對象&#xff1a;所有東西都是對象動態類型&#xff1a;變量不…

PPO、DPO和GRPO的區別

一、 核心思想一句話概括 首先&#xff0c;我們用三個比喻來快速理解它們的核心思想&#xff1a;PPO (近端策略優化)&#xff1a; 「比武招親」 模型&#xff08;AI&#xff09;通過試錯和與裁判&#xff08;獎勵模型&#xff09;的互動來學習。它生成多個回答&#xff0c;裁判…

使用組合子構建抽象語法樹

引言 組合子&#xff08;Combinator&#xff09;是一種函數式編程中的概念&#xff0c;它允許我們通過組合簡單的函數來構建復雜的邏輯。在解析器和抽象語法樹&#xff08;AST&#xff09;的構建中&#xff0c;組合子提供了一種簡潔且模塊化的方法。本文將介紹如何使用組合子來…

20.27《24GB顯卡輕松訓練ChatGLM3-6B!QLoRA極速微調實戰指南》

24GB顯卡輕松訓練ChatGLM3-6B!QLoRA極速微調實戰指南 import torch from transformers import AutoModel, AutoTokenizer, BitsAndBytesConfig# 配置4-bit量化參數 bnb_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_use_double_quant=True

JSP 輸出語法全面解析

JSP 輸出語法全面解析 JSP 提供了多種輸出內容到響應流的方式&#xff0c;每種方式都有其特定的使用場景和特點。以下是 JSP 輸出語法的詳細解析。 總結 JSP直接編寫普通字符串 翻譯到service方法的out.write(“這里面”) <%%> 翻譯到service方法體內部&#xff0c;里面是…

前端學習——CSS

前面我們已經學習過來HTML。但是對于前端網頁來說&#xff0c;HTML只是網頁的骨架。而只是使用HTML的網頁是十分簡陋的&#xff0c;一般沒辦法應用于實際應用。因此我們還要學習CSS對網頁進行美化。 相關代碼已經上傳至gitee&#xff1a;前端學習代碼: 前端學習&#xff0c;喜歡…

【stm32】對射式紅外傳感器計次以及旋轉編碼器計次

對射式紅外傳感器計次 1. 將傳感器的功能分裝在一個模塊里CountsSenser2.配置外部中斷1.配置RCC&#xff0c;將涉及的外設的時鐘都打開 2.配置GPIO&#xff0c;選擇端口為輸入模式 3.配置AFIO&#xff0c;選擇前面使用的一路GPIO,連接到后面的EXTI 4.配置EXTI&#xff0c;選擇邊…

人工智能學習:Python相關面試題

1、Python與其他語言&#xff08;如Java/C&#xff09;的核心區別是什么&#xff1f;Python是動態類型的解釋型語言&#xff0c;語法簡潔&#xff0c;支持多種編程范式&#xff08;面向對象、函數式、過程式&#xff09;。與Java相比&#xff0c; Python無需編譯且語法更簡潔&a…

【Canvas與旗幟】哥倫比亞旗圓餅

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>哥倫比亞旗圓餅 Draft1</title><style type"text/css&qu…

Linux 系統 poll 與 epoll 機制2:實現原理與應用實踐

接上文poll機制&#xff1a;Linux 系統 poll 與 epoll 機制1。 3. epoll 機制&#xff1a;高并發 I/O 的優化實現? epoll(Efficient event polling implementation)機制誕生于 Linux 2.5.44 版本&#xff0c;是內核為解決高并發 I/O 場景&#xff08;如萬級以上 FD 監聽&…