刷題之路徑總和Ⅲ(leetcode)

路徑總和Ⅲ
在這里插入圖片描述
這題和和《為K的數組》思路一致,也是用前綴表。
代碼調試過,所以還加一部分用前序遍歷數組和中序遍歷數組構造二叉樹的代碼。

#include<vector>
#include<unordered_map>
#include<iostream>
using namespace std;
//Definition for a binary tree node.
struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};class Solution {
private:unordered_map<long long, int>map;int dfs(TreeNode* root, long long cur, int targetSum){if (root == NULL){return 0;}int count = 0;cur += root->val;if (map.find(cur - targetSum) != map.end()){count += map[cur - targetSum];}map[cur]++;int leftcount = dfs(root->left, cur, targetSum);int rightcount = dfs(root->right, cur, targetSum);map[cur]--;//因為路徑總和只是針對同一個頭結點,所以不是同一個頭結點時需要回溯return count + leftcount + rightcount;}
public:int pathSum(TreeNode* root, int targetSum) {map[0] = 1;return dfs(root, 0, targetSum);}
};class tree {
private:TreeNode* build(vector<int>& preorder, vector<int>& inorder){if (preorder.size() == 0)return NULL;//找到根節點int rootvalue = preorder[0];TreeNode* root = new TreeNode(rootvalue);//葉子節點if (preorder.size() == 1)return root;//區分左右子樹位置int index = 0;for (int i = 0; i < inorder.size(); i++){if (inorder[i] == rootvalue){index = i;break;}}vector<int>left_in(inorder.begin(), inorder.begin() + index);vector<int>right_in(inorder.begin() + index + 1, inorder.end());vector<int>left_pre(preorder.begin() + 1, preorder.begin() + 1 + left_in.size());vector<int>right_pre(preorder.begin() + 1 + left_in.size(), preorder.end());root->left = build(left_pre, left_in);root->right = build(right_pre, right_in);return root;}
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return build(preorder, inorder);}
};int main()
{vector<int>inorder = {3,3,-2,5,2,1,10,-3,11};vector<int>preorder = { 10,5,3,3,-2,2,1,-3,11 };int targetsum = 8;tree mytree;TreeNode* root = mytree.buildTree(preorder,inorder);Solution solution;int result = solution.pathSum(root, targetsum);cout << result << endl;
}

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

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

相關文章

python從入門到精通01

一、程序員計算器 number int(input("請輸入一個數字&#xff1a;")) print("二進制",bin(number)) print("八進制",oct(number)) print("十六進制",hex(number))二、給電影打分 score int(input("請給電影《肖申克的救贖》打…

計算機畢業設計Hadoop+Hive地震預測系統 地震數據分析可視化 地震爬蟲 大數據畢業設計 Spark 機器學習 深度學習 Flink 大數據

2024 屆本科畢業論文&#xff08;設計&#xff09; 基于Hadoop的地震預測的 分析與可視化研究 姓 名&#xff1a;____田偉情_________ 系 別&#xff1a;____信息技術學院___ 專 業&#xff1a;數據科學與大數據技術 學 號&#xff1a;__2011103094________ 指導…

【大數據面試題】33 Flink SQL做過哪些優化?

一步一個腳印&#xff0c;一天一道面試題 簡單寫幾個 Flink SQL 的優化 1.優化狀態管理 Flink 的狀態管理對整個程序的性能有較大影響。所以優化效果比較好。 設置空閑狀態自動清理&#xff08;TTL Time-to-Live&#xff09;數據量大時選擇 RocksDBStateBackend // 設置狀…

《圖解支付系統設計與實現》電子書_V20240525

相較于上次公開發布的V20240503版本&#xff0c;變更內容如下&#xff1a; 根據掘金網友zz67373&#xff08;李浩銘&#xff09;的勘誤建議&#xff0c;優化了部分描述。增加&#xff1a;金額處理規范&#xff0c;低代碼報文網關實現完整代碼&#xff0c;分布式流控等內容。擴…

Java虛擬機原理(下)-Dalvik vs ART-探秘Android虛擬機內在機制

Android系統作為移動端主流平臺&#xff0c;其高效的虛擬機無疑是其核心競爭力之一。今天&#xff0c;就讓我們一起剝開Dalvik和ART虛擬機的外衣&#xff0c;深入解析它們的工作原理和優缺點&#xff0c;幫助你全面把握Android系統的運行機制。 正文導覽 Dalvik和ART虛擬機的發…

Openstack all-in-one_ironic 部署測試

1. 基礎環境 apt update apt install git python3-dev libffi-dev gcc libssl-dev apt install python3-venv 2. 設置虛擬環境變量 root@controller01:~# python3 -m venv /deploy/venv root@controller01:~# source /deploy/venv/bin/activate (venv) root@controller01:~#…

Nginx - 安全基線配置與操作指南

文章目錄 概述中間件安全基線配置手冊1. 概述1.1 目的1.2 適用范圍 2. Nginx基線配置2.1 版本說明2.2 安裝目錄2.3 用戶創建2.4 二進制文件權限2.5 關閉服務器標記2.6 設置 timeout2.7 設置 NGINX 緩沖區2.8 日志配置2.9 日志切割2.10 限制訪問 IP2.11 限制僅允許域名訪問2.12 …

debugger(一):打斷點的實現以及案例分析

〇、前言 最近在學習 debugger 的實現原理&#xff0c;并按照博客實現&#xff0c;是一個很不錯的小項目&#xff0c;這是地址。由于 macOS 的問題&#xff0c;系統調用并不完全相同&#xff0c;因此實現了兩個版本分支&#xff0c;一個是 main 版本分支&#xff08;macOS M1 …

【一站式學會Kotlin】第八節:kotlin== 和 === 的差別和含義

作者介紹&#xff1a; 百度資深Android工程師T6&#xff0c;在百度任職7年半。 目前&#xff1a;成立趙小灰代碼工作室&#xff0c;歡迎大家找我交流Android、微信小程序、鴻蒙項目。 一&#xff1a;通俗易懂的人工智能教程&#xff1a;https://www.captainbed.cn/nefu/ 點一下…

Altium Designer 中鍵拖動,滾輪縮放,并修改縮放速度

我的版本是AD19&#xff0c;其他版本應該都一樣。 滾輪縮放 首先&#xff0c;要用滾輪縮放&#xff0c;先要調整一下AD 設置&#xff0c;打開Preferences&#xff0c;在Mouse Wheel Configuration 里&#xff0c;把Zoom Main Window 后面Ctrl 上的對勾取消掉&#xff0c;再把…

C++中的懸掛指針和野指針

懸掛指針&#xff08;dangling pointer&#xff09;和野指針&#xff08;wild pointer&#xff09;是兩種常見的指針錯誤&#xff0c;雖然它們都可能導致未定義行為&#xff0c;但它們產生的原因和表現有所不同。 1.懸掛指針&#xff08;Dangling Pointer&#xff09; 懸掛指…

2024 ISCC pwn wp

iscc 練武pwn 總結第一周chaosISCC_easyFlagshopping 第二周ISCC_easyISCC_Uheapheap 第三周miaoYour_programeazy_heap 總結 總體感覺iscc考察的題目都挺基礎的&#xff0c;在目前這種比賽的大環境下&#xff0c;仍然出這種&#xff0c;比較基礎的題目&#xff0c;實在是難得…

智馭未來:探究AIGC行業的戰略入局時機與前景展望

當前時點涉足人工智能生成內容&#xff08;AIGC&#xff09;行業&#xff0c;是一個策略性抉擇&#xff0c;基于對該行業現狀的深度剖析及對未來趨勢的前瞻性預判&#xff0c;其可行性與吸引力顯著。 行業發展階段分析&#xff1a; 技術迭代加速&#xff1a;近年來&#xff0c…

力扣刷題---2283. 判斷一個數的數字計數是否等于數位的值【簡單】

題目描述 給你一個下標從 0 開始長度為 n 的字符串 num &#xff0c;它只包含數字。 如果對于 每個 0 < i < n 的下標 i &#xff0c;都滿足數位 i 在 num 中出現了 num[i]次&#xff0c;那么請你返回 true &#xff0c;否則返回 false 。 示例 1&#xff1a; 輸入&a…

SpringCloud系列(31)--使用Hystrix進行服務降級

前言&#xff1a;在上一章節中我們創建了服務消費者模塊&#xff0c;而本節內容則是使用Hystrix對服務進行服務降級處理。 1、首先我們先對服務提供者的服務進行服務降級處理 (1)修改cloud-provider-hystrix-payment8001子模塊的PaymentServiceImpl類 注&#xff1a;HystrixP…

學習elixir(1)

突然發現elixir很有趣&#xff0c;所以想記錄以下學習內容 # .ex .exs file elixir simple.exs # mix new <app_name> # mix deps.get; mix deps.update; mix deps.compile # 怎么使用mix escript.build # eg. 在mix.exs添加escript: [main_module: IntentionCLI, name:…

Window在VScode運行C/C++程序

首先說明&#xff1a;不同運行環境&#xff08;Linux/Window&#xff09;下的頭文件會有差異&#xff0c;要注意變換&#xff01;生成可執行文件 Window默認生成a.exe&#xff0c;Linux默認生成a.out # C源代碼 g test.cpp # C語言源代碼 g test.c 或 gcc test.c直接輸入a.ex…

從零開始學逆向,js逆向啟蒙:有道翻譯

語言&#xff1a;js、python 工具&#xff1a;pycharm、chrome瀏覽器F12調試、chatgpt&#xff08;補充js第三方庫&#xff0c;轉python&#xff09;、node.js(js運行)&#xff08;必須&#xff09; 目標&#xff1a;學習掌握基本js逆向知識。 對象&#xff1a; 有道翻譯 &a…

怎么判斷同步時序邏輯電路和異步時序邏輯電路?

&#x1f3c6;本文收錄于「Bug調優」專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&&…

力扣刷題---2418. 按身高排序【簡單】

題目描述 給你一個字符串 數組 names &#xff0c;和一個由 互不相同 的正整數組成的數組 heights 。兩個數組的長度均為 n 。 對于每個下標 i&#xff0c;names[i] 和 heights[i] 表示第 i 個人的名字和身高。 請按身高 降序 順序返回對應的名字數組 names 。 示例 1&…