C語言 | Leetcode C語言題解之第133題克隆圖

題目:

題解:

struct Node** visited;
int* state;  //數組存放結點狀態 0:結點未創建 1:僅創建結點 2:結點已創建并已填入所有內容void bfs(struct Node* s) {if (visited[s->val] && state[s->val] == 2) {return;}struct Node* neighbor;if (visited[s->val]) {neighbor = visited[s->val];neighbor->val = s->val;neighbor->numNeighbors = s->numNeighbors;neighbor->neighbors = (struct Node**)malloc(sizeof(struct Node*) * neighbor->numNeighbors);} else {// 如果沒有被訪問過,就克隆并存儲在哈希表中neighbor = (struct Node*)malloc(sizeof(struct Node));neighbor->val = s->val;neighbor->numNeighbors = s->numNeighbors;neighbor->neighbors = (struct Node**)malloc(sizeof(struct Node*) * neighbor->numNeighbors);visited[s->val] = neighbor;}for (int i = 0; i < neighbor->numNeighbors; i++) {if (visited[s->neighbors[i]->val]) {neighbor->neighbors[i] = visited[s->neighbors[i]->val];} else {visited[s->neighbors[i]->val] = (struct Node*)malloc(sizeof(struct Node));state[s->neighbors[i]->val] = 1;neighbor->neighbors[i] = visited[s->neighbors[i]->val];}}state[neighbor->val] = 2;
}struct Node* cloneGraph(struct Node* s) {if (s == NULL) {return NULL;}// 將題目給定的節點添加到隊列struct Node *QUEUE[101], *p;int head = -1, eneighbor = -1, i, flag[101];visited = (struct Node**)malloc(sizeof(struct Node*) * 101);memset(visited, 0, sizeof(struct Node*) * 101);state = (int*)malloc(sizeof(int) * 101);memset(state, 0, sizeof(int) * 101);memset(flag, 0, sizeof(int) * 101);// 克隆第一個節點并存儲到哈希表中QUEUE[++eneighbor] = s;// 廣度優先搜索while (head != eneighbor) {// 取出隊列的頭節點p = QUEUE[++head];// 遍歷該節點的鄰居bfs(p);for (i = 0; i < p->numNeighbors; i++) {if (!flag[p->neighbors[i]->val]) {// 將鄰居節點加入隊列中QUEUE[++eneighbor] = p->neighbors[i];flag[p->neighbors[i]->val] = 1;}}}return visited[s->val];
}

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

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

相關文章

【嵌入式系統實踐】實驗三EXTI按鈕外部中斷控制LED燈參考代碼

此內容不屬于實驗內容&#xff0c;因自己手頭有一STM32F103&#xff0c;故驗證性的進行代碼實驗&#xff0c;按照老師課堂ppt進行了一下復現。 通過按鈕控制LED燈的亮滅(狀態取反)。 main.c代碼&#xff1a; #include "STM32F10X.h" #include "stdio.h"…

Open3D Guided濾波(Python版本)

文章目錄 一、簡介二、實現代碼三、實現效果參考資料一、簡介 Guided Filter原本主要用于2D圖像的降噪等處理,但經過適當的修改后,它可以有效地應用于3D點云的降噪。這種方法能夠保留點云中的細節信息,并且對邊緣和曲面進行保護。 其具體計算過程如下所述: 1.局部線性假設:…

Python Lambda函數的應用實例教程

在Python編程中&#xff0c;lambda函數是一種簡潔且強大的工具&#xff0c;用于創建小型匿名函數。它們在需要快速定義簡單函數時特別有用。本文將詳細介紹lambda函數的語法及其多種應用實例&#xff0c;幫助讀者更好地理解和使用lambda函數。 一、lambda函數的基本概念 1.1 什…

c++(內存分配,構造,析構)

#include <iostream>using namespace std; class Per { private:string name;int age;double *height;double *weigh; public://無參構造Per(){cout << "Per::無參構造" << endl;}//有參構造Per(string name,int age,double height,double weigh):…

Nginx 的 stream 模塊,配置轉發redis和mysql

Nginx 的 stream 模塊確實可以配置多個 upstream 塊&#xff0c;用于定義多個后端服務器組。然而&#xff0c;需要注意的是&#xff0c;每個 upstream 塊通常用于一種特定類型的服務&#xff0c;例如定義一組TCP服務器&#xff0c;可以是Redis服務器、MySQL服務器或其他任何TCP…

【TB作品】 51單片機8x8點陣顯示滾動漢字仿真

功能 題目5基于51單片機LED8x8點陣顯示 流水燈 直接滾動顯示HELLO 直接滾動顯示老師好 代碼 void main( void ) {/** 移位后&#xff0c;右邊的是第一個595&#xff0c;接收0X02&#xff0c;顯示出0X02* 移位后&#xff0c;左邊的是第2個595&#xff0c;接收0Xfe&#xff0c…

創建常規DLL的動態鏈接庫

本文僅供學習交流&#xff0c;嚴禁用于商業用途&#xff0c;如本文涉及侵權請及時聯系本人將于及時刪除 【例9.3】創建一個MFC 常規DLL的動態鏈接庫Areadll&#xff0c;在該動態鏈接庫中添加一個導出類CArea&#xff0c;通過該類獲取正方形和圓的面積。 (1) 使用“MFC動態鏈接…

HttpClient Overview(翻譯)

HttpClient Overview **原文鏈接&#xff1a;HttpClient Overview The Hyper-Text Transfer Protocol(HTTP) is perhaps the most significant protocol used on the Internet today.Web services,network-enabled appliances and the growth on of network computing contin…

Allegro器件角度傾斜如何回正?

Allegro器件角度傾斜,坐標含有小數點調整為45度整數倍的方法 Allegro器件角度傾斜回正的方法。 在用Allero進行PCB設計過程中,有時候由于誤操作;或者剛開始器件需要非45度整數倍的角度,后又需要調整為整數倍的角度。器件角度傾斜含有小數點調整為45度整數倍的方法。 1、如…

Python Word變量:深入探索與實際應用

Python Word變量&#xff1a;深入探索與實際應用 在Python編程中&#xff0c;處理文本數據是一項至關重要的任務。而Word變量&#xff0c;作為存儲和操作文本數據的核心元素&#xff0c;其使用和技巧對于提升編程效率和準確性具有不可忽視的作用。本文將從四個方面、五個方面、…

Arduino網頁服務器:如何將Arduino開發板用作Web服務器

大家好&#xff0c;我是咕嚕鐵蛋&#xff01;今天&#xff0c;我將和大家分享一個有趣且實用的項目——如何使用Arduino開發板搭建一個簡易的網頁服務器。通過這個項目&#xff0c;你可以將Arduino連接到互聯網&#xff0c;并通過網頁控制或查詢Arduino的狀態。 一、項目背景與…

vue實現pdf下載——html2canvas

html2canvas 官方文檔https://html2canvas.hertzen.com/getting-started html2canvas 的原理是通過遍歷DOM樹,將每一個HTML元素轉化為Canvas對象,并疊加到一起形成一張完整的圖片或者PDF文件。 1. 安裝插件 npm install html2canvas jspdf --save 2.使用&#xff08;頁面已經…

Stable Diffusion:多領域應用的創新引擎

一、引言 在當今數字化時代&#xff0c;人工智能技術的飛速發展為各個領域帶來了前所未有的機遇和挑戰。Stable Diffusion 作為一種先進的隨機過程模型&#xff0c;以其獨特的優勢和廣泛的應用潛力&#xff0c;成為了人工智能領域的研究熱點。本文將深入探討 Stable Diffusion…

git 的基本操作 Master and branch的版本合并 @ VS 1019

前言&#xff1a; 在VS 2019有git 的可視化管理,但&#xff0c;感覺微軟其實就是在git上包了一層。版本沖突后&#xff0c;還是要靠git 的命令行代碼搞。本文記錄了一次&#xff0c;branch和master的版本合并的過程。作為&#xff0c;后續的參考。 【注意&#xff0c;這個是一…

【二進制部署k8s-1.29.4】十三、metrics-server的安裝部署

文章目錄 簡介 一.metrics-server的安裝 簡介 本章節主要講解metrics-server的安裝&#xff0c;metrics-server主要是用于采集k8s中節點和pod的內存和cpu指標&#xff0c;在觀察幾點和pod的實時資源使用情況還是比較有用的&#xff0c;如果需要記錄歷史信息&#xff0c;建議采用…

運行編譯openjdk12-33

編譯環境 ubuntu20 Ubuntu里用戶可以自行選擇安裝GCC或CLang來進行編譯&#xff0c;但必須確保最低的版本為GCC 4.8或者CLang 3.2以上&#xff0c;官方推薦使用GCC 7.8或者CLang 9.1來完成編譯。 源碼 https://github.com/openjdk/jdk/tree/jdk-12%2B33 安裝gcc sudo apt…

人工智能的未來發展前景:機遇與挑戰

人工智能&#xff08;AI&#xff09;的發展在過去的幾十年里取得了突飛猛進的成就&#xff0c;已經成為推動全球科技創新的關鍵動力之一。隨著技術的不斷進步和應用的日益廣泛&#xff0c;AI的未來發展前景顯得更加廣闊&#xff0c;同時也面臨一系列新的機遇和挑戰。 技術革新…

使用neural_network_console訓練模型并導出.nnb文件應用于索尼spresense

一.創建數據集 首先你需要一個csv標記的數據集 然后我們使用neural_network_console將數據集進行處理 dataset->create dataset->image 用戶可以通過該界面選擇源目錄&#xff08;Source Dir&#xff09;&#xff0c;輸出目錄&#xff08;Output Dir&#xff09;&…

哈希表、HashMap\Map-1657. 確定兩個字符串是否接近

題目鏈接及描述 1657. 確定兩個字符串是否接近 - 力扣&#xff08;LeetCode&#xff09; 題目分析 今日看到這道題目&#xff0c;乍一看覺得非常熟悉&#xff0c;對于將一個字符串轉換為另一個字符串的題目之前做過一些。分析題目&#xff0c;題目中所述就是兩種操作&#xff…

ubuntu藍牙連接問題

ubuntu藍牙連接問題 ubuntu藍牙連接問題1、安裝驅動2、優化藍牙配置文件3、解決 Failed to connect: org.bluez.Error.Failed ubuntu藍牙連接問題 之前我發現電腦有藍牙圖標&#xff0c;且能打開關閉&#xff0c;就以為藍牙默認已經配置好了&#xff0c;直到有一天我嘗試連接我…