leetcode日記(100)填充每個節點的下一個右側節點指針

和層序遍歷差不多的思路,將節點儲存在隊列里,一邊取出節點一邊放入取出節點的左右節點,直到隊列空。

/*
// Definition for a Node.
class Node {
public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left, Node* _right, Node* _next): val(_val), left(_left), right(_right), next(_next) {}
};
*/class Solution {
public:Node* connect(Node* root) {if(root==NULL) return root;int record=1;queue<Node*> n;n.push(root);while(!n.empty()){Node* node=NULL;for(int i=0;i<record;i++){Node* first=n.front();if(first->left){n.push(first->left);n.push(first->right);}if(node) node->next=first;node=first;n.pop();}record*=2;}return root;}
};

本來我是寫的vector,但是發現queue更好,完美匹配。

以及看了答案發現還有一種很機智的思路。

大概就是next有兩種取法(對于root和其left、right),一種是left的next為right,一種是right的next為root的next的left。

如此就可以遞歸。

/*
// Definition for a Node.
class Node {
public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left, Node* _right, Node* _next): val(_val), left(_left), right(_right), next(_next) {}
};
*/class Solution {
public:Node* connect(Node* root) {Node* result=root;while(root){Node* record=root->left;while(root&&root->left){root->left->next=root->right;if(root->next) root->right->next=root->next->left;root=root->next;}root=record;}return result;}
};

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

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

相關文章

MySQL配置文件my.cnf詳解

目前使用的服務器系統是CentOS8.5 ,針對MySql8.4的配置示例&#xff0c;自己根據實際情況修改。 安裝MySql8.4時&#xff0c;MySql8.4沒有默認的my.cnf,需要用戶根據需要自行配置my.cnf文件&#xff0c;大概可看到下面這樣的參數列表&#xff0c;可能不同版本的mysql參數多少會…

【解決】XCode不支持舊版本的iOS設備

辦法&#xff1a; 手動添加設備支持文件&#xff08;暫時解決方式&#xff09; 如果您無法立即升級 Xcode&#xff0c;也可以通過下載設備支持文件來暫時解決問題。 檢查當前設備的 iOS 版本&#xff1a; 連接設備到 Mac&#xff0c;打開 Xcode 查看提示的 iOS 版本。例如&…

每日c/c++題 備戰藍橋杯(全排列問題)

題目描述 按照字典序輸出自然數 1 到 n 所有不重復的排列&#xff0c;即 n 的全排列&#xff0c;要求所產生的任一數字序列中不允許出現重復的數字。 輸入格式 一個整數 n。 輸出格式 由 1~n 組成的所有不重復的數字序列&#xff0c;每行一個序列。 每個數字保留 5 個場…

注意力蒸餾技術

文章目錄 摘要abstract論文摘要簡介方法預備知識注意力蒸餾損失注意力引導采樣 實驗結論總結參考文獻 摘要 本周閱讀了一篇25年二月份發表于CVPR 的論文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,論文開發了Attention Distillation…

flutter android端抓包工具

flutter做的android app&#xff0c;使用fiddler抓不了包&#xff0c;現介紹一款能支持flutter的抓包工具Reqable&#xff0c;使用方法如下&#xff1a; 1、下載電腦端安裝包 下載地址為【https://reqable.com/zh-CN/download/】 2、還是在上述地址下載 android 端apk&#xf…

PyTorch單機多卡訓練(DataParallel)

PyTorch單機多卡訓練 nn.DataParallel 是 PyTorch 中用于多GPU并行訓練的一個模塊&#xff0c;它的主要作用是將一個模型自動拆分到多個GPU上&#xff0c;并行處理輸入數據&#xff0c;從而加速訓練過程。以下是它的核心功能和工作原理&#xff1a; 1、主要作用 數據并行&am…

PyTorch中的Tensor

PyTorch中的Tensor? 是核心數據結構&#xff0c;類似于 NumPy 的多維數組&#xff0c;但具備 GPU 加速和自動求導等深度學習特性。 一、基本概念 ?核心數據結構? Tensor 是存儲和操作數據的基礎單元&#xff0c;支持標量&#xff08;0D&#xff09;、向量&#xff08;1D&am…

基于Python的圖書館信息管理系統研發

標題:基于Python的圖書館信息管理系統研發 內容:1.摘要 在數字化信息快速發展的背景下&#xff0c;傳統圖書館管理方式效率低下&#xff0c;難以滿足日益增長的信息管理需求。本研究旨在研發一款基于Python的圖書館信息管理系統&#xff0c;以提高圖書館信息管理的效率和準確性…

RCE復現

1.過濾flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代碼審計過濾了"flag"關鍵詞&#xff0c;但限制較弱&#xff0c;容易繞過 ?csystem("ls&…

FPGA_YOLO(四) 部署yolo HLS和Verilog 分別干什么

首先,YOLO作為深度學習模型,主要包括卷積層、池化層、全連接層等。其中,卷積層占據了大部分計算量,尤其適合在FPGA上進行并行加速。而像激活函數(如ReLU)和池化層相對簡單,可能更容易用HLS實現。FPGA的優勢在于并行處理和定制化硬件加速,因此在處理這些計算密集型任務時…

自動化發布工具CI/CD實踐Jenkins介紹!

1. 認識Jenkins 1.1 Jenkins是什么&#xff1f; Jenkins 是一個開源的自動化服務器&#xff0c;主要用于持續集成和持續部署&#xff08;CI/CD&#xff09;。 它由Java編寫&#xff0c;因此它可以在Windows、Linux和macOS等大多數操作系統上運行。 Jenkins 提供了一個易于使用…

【愚公系列】《高效使用DeepSeek》039-政務工作輔助

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

深度學習篇---模型訓練評估參數

文章目錄 前言一、Precision&#xff08;精確率&#xff09;1.1定義1.2意義1.3數值接近11.4數值再0.5左右1.5數值接近0 二、Recall&#xff08;召回率&#xff09;2.1定義2.2意義2.3數值接近12.4數值在0.5左右2.5數值接近0 三、Accuracy&#xff08;準確率&#xff09;3.1定義3…

Windows 圖形顯示驅動開發-WDDM 2.4功能-GPU 半虛擬化(十一)

注冊表設置 GPU虛擬化標志 GpuVirtualizationFlags 注冊表項用于設置半虛擬化 GPU 的行為。 密鑰位于&#xff1a; DWORD HKLM\System\CurrentControlSet\Control\GraphicsDrivers\GpuVirtualizationFlags 定義了以下位&#xff1a; 位描述0x1 ? 為所有硬件適配器強制設置…

Vue 的 nextTick 是如何實現的?

參考答案&#xff1a; nextTick 的本質將回調函數包裝為一個微任務放入到微任務隊列&#xff0c;這樣瀏覽器在完成渲染任務后會優先執行微任務。 nextTick 在 Vue2 和 Vue3 里的實現有一些不同&#xff1a; 1. Vue2 為了兼容舊瀏覽器&#xff0c;會根據不同的環境選擇不同包裝策…

安卓開發之LiveData與DataBinding

LiveData——生命周期感知 LiveData 是 Android Jetpack 提供的一個生命周期感知的數據持有者類&#xff0c;它可以用于持有數據并在數據發生變化時通知觀察者。LiveData 常與 ViewModel 配合使用&#xff0c;幫助簡化 UI 層和數據層之間的交互&#xff0c;確保 UI 在合適的生…

TCP協議與wireshark抓包分析

一、tcp協議格式 1. 源端口號 &#xff1a; 發送方使用的端口號 2. 目的端口號 &#xff1a; 接收方使用的端口號 3. 序號: 數據包編號 &#xff0c; tcp 協議為每個數據都設置編號,用于確認是否接收到相應的包 4. 確認序列號 : 使用 tcp 協議接收到數據包&#xff0c…

《HelloGitHub》第 108 期

興趣是最好的老師&#xff0c;HelloGitHub 讓你對開源感興趣&#xff01; 簡介 HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。 github.com/521xueweihan/HelloGitHub 這里有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等&#xff0c;涵蓋多種編程語言 Python、…

VITA 模型解讀,實時交互式多模態大模型的 pioneering 之作

寫在前面:實時交互llm 今天回顧一下多模態模型VITA,當時的背景是OpenAI 的 GPT-4o 驚艷亮相,然而,當我們將目光投向開源社區時,卻發現能與之匹敵的模型寥寥無幾。當時開源多模態大模型(MLLM),大多在以下一個或多個方面存在局限: 模態支持不全:大多聚焦于文本和圖像,…

VLAN的高級特性

前言&#xff1a; 1&#xff1a;華為VLAN聚合通過邏輯分層設計&#xff0c;將廣播域隔離與子網共享結合&#xff0c;既解決了IP地址浪費問題&#xff0c;又實現了靈活的網絡管理 2&#xff1a;MUX VLAN&#xff08;Multiplex VLAN&#xff09;提供了一種通過VLAN進行網絡資源控…