單鏈表的題目,咕咕咕

1.咕

203. 移除鏈表元素 - 力扣(LeetCode)

給你一個鏈表的頭節點?head?和一個整數?val?,請你刪除鏈表中所有滿足?Node.val == val?的節點,并返回?新的頭節點?

struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* newnode=NULL;struct ListNode* newhead=NULL;while(head){if(head->val!=val)//進行一個尾插就行了{if(newnode==NULL){newnode=head;newhead=head;}else{newnode->next=head;newnode=newnode->next;}}head=head->next;}if(newnode)newnode->next=NULL;return newhead;
}

2.咕咕

206. 反轉鏈表 - 力扣(LeetCode)

給你單鏈表的頭節點?head?,請你反轉鏈表,并返回反轉后的鏈表。

struct ListNode* reverseList(struct ListNode* head) {struct ListNode* l1=NULL;struct ListNode* l2=head;while(l2!=NULL){struct ListNode* l3=l2->next;l2->next=l1;l1=l2;l2=l3;}return l1;
}
//定義3個指針NULL   1  ->  2  ->  3  ->  NULLl1<-   l2<-   l3l1<-   l2 <-  l3

3.咕咕咕

876. 鏈表的中間結點 - 力扣(LeetCode)

給你單鏈表的頭結點?head?,請你找出并返回鏈表的中間結點。

如果有兩個中間結點,則返回第二個中間結點。

struct ListNode* middleNode(struct ListNode* head) {if(head==NULL) return NULL;struct ListNode* l1=head;struct ListNode* l2=head;while(l2&&l2->next){l1=l1->next;l2=l2->next->next;}return l1;
}
//快慢指針,找鏈表中點

4.咕咕咕咕

21. 合并兩個有序鏈表 - 力扣(LeetCode)

將兩個升序鏈表合并為一個新的?升序?鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。?

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {if(list1==NULL) return list2;if(list2==NULL) return list1;struct ListNode* l1=list1;struct ListNode* l2=list2;
//申請一個“哨兵位”,放在最前面,可以簡化一會尾插的代碼,不用考慮尾插時鏈表為空的情況struct ListNode* newhead=(struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode* pcur=newhead;while(l1&&l2){if(l1->val>l2->val){pcur->next=l2;l2=l2->next;}else{pcur->next=l1;l1=l1->next;}pcur=pcur->next;}if(l1) pcur->next=l1;if(l2) pcur->next=l2;newhead=newhead->next;return newhead;
}

5.咕咕咕咕咕

鏈表的回文結構_牛客題霸_牛客網

對于一個鏈表,請設計一個時間復雜度為O(n),額外空間復雜度為O(1)的算法,判斷其是否為回文結構。

給定一個鏈表的頭指針A,請返回一個bool值,代表其是否為回文結構。保證鏈表長度小于等于900。

class PalindromeList {
public:bool chkPalindrome(ListNode* head) {if(head == nullptr || head->next == nullptr) return true;
//先快慢指針找中點ListNode* slow = head;ListNode* fast = head;while(fast && fast->next) {slow = slow->next;fast = fast->next->next;}
//中點之后的鏈表反轉ListNode* reversed = nullptr;ListNode* current = slow;while(current) {ListNode* nextNode = current->next;current->next = reversed;reversed = current;current = nextNode;}
//進行比對ListNode* p1 = head;ListNode* p2 = reversed;bool isPalindrome = true;while(p1 && p2) {if(p1->val != p2->val) {isPalindrome = false;break;}p1 = p1->next;p2 = p2->next;}return isPalindrome;}
};

6.咕咕咕咕咕咕

鏈表分割_牛客題霸_牛客網

現有一鏈表的頭指針 ListNode*?pHead,給一定值x,編寫一段代碼將所有小于x的結點排在其余結點之前,且不能改變原來的數據順序,返回重新排列后的鏈表的頭指針。

ListNode* partition(ListNode* pHead, int x) {if(pHead == nullptr || pHead->next == nullptr) return pHead;ListNode* smallDummy = new ListNode(0); // 小值鏈表的虛擬頭節點ListNode* bigDummy = new ListNode(0);   // 大值鏈表的虛擬頭節點ListNode* small = smallDummy;ListNode* big = bigDummy;ListNode* pcur = pHead;while(pcur != nullptr) {if(pcur->val < x) {small->next = pcur;small = small->next;} else {big->next = pcur;big = big->next;}pcur = pcur->next;}// 連接兩個鏈表big->next = nullptr; // 防止循環鏈表small->next = bigDummy->next;ListNode* result = smallDummy->next;delete smallDummy;delete bigDummy;return result;}

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

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

相關文章

關于程序=數據結構+算法這句話最近的一些思考

最近看了很多單片機STM32的的相關程序&#xff0c;尤其是設計到ringbuff、buffer_manage、os_memory預計mem_manage等程序中間層的用法&#xff0c;我對這句話有了一些更深的思考&#xff0c;現在記錄下來&#xff0c;希望對處于相同階段的程序一些思想啟迪。首先“數據結構”也…

Rust 錯誤處理

Rust 錯誤處理 引言 Rust 是一種系統編程語言&#xff0c;以其安全、并發和性能著稱。在 Rust 中&#xff0c;錯誤處理是一個核心概念&#xff0c;它確保了程序在遇到異常情況時能夠優雅地處理。本文將深入探討 Rust 中的錯誤處理機制&#xff0c;包括錯誤類型、錯誤傳播、錯誤…

17. 什么是 webSocket ?

總結 WebSocket 是 HTML5 引入的一種新協議&#xff0c;允許客戶端和服務器之間進行雙向實時通信。建立在 TCP 協議之上&#xff0c;默認端口是 80&#xff08;ws&#xff09; 和 443&#xff08;wss&#xff09;&#xff0c;沒有同源限制&#xff0c;客戶端可以與任意服務器通…

從零開始跑通3DGS教程:(五)3DGS訓練

寫在前面 本文內容 所屬《從零開始跑通3DGS教程》系列文章; 本文介紹在docker中訓練3dgs的方法 平臺/環境 linux, nvidia GPU, docker 轉載請注明出處: https://blog.csdn.net/qq_41102371/article/details/146535874 目錄 寫在前面系列文章準備docker創建環境參考完系列文章…

日記_7.14_實際開發的進步

1、快速定位后端2、會定位前端啦啦啦&#xff01;3、前端沒有意義的塊叫div和span。而不是script4、所有 JavaScript 標識符均 區分大小寫5、JS中$和_下劃線和doller符均被視為字母。6、var、let區別&#xff1a;1 var全局。let局部。2 var可以重新聲明格式&#xff0c;let之恩…

AI Agent 開發

Agent開發常用框架&#xff1a; LangChainLlamaIndexVercel AI SDK LangChain&#xff1a;一站式 LLM 應用開發框架一句話總結 LangChain 把「模型調用 外部數據 工具 記憶 流程編排」全部標準化&#xff0c;讓你像搭積木一樣快速組合出聊天機器人、RAG、Agent 等大模型應用…

【水動力學】04 二維洪水淹沒模型Pypims安裝

模型介紹 HiPIMS&#xff08;High-Performance Integrated hydrodynamic Modelling System&#xff09;使用最先進的數值方案&#xff08;Godunov型有限體積法&#xff09;來求解二維淺水方程以進行洪水模擬。為了支持高分辨率洪水模擬&#xff0c;使用CUDA/C 語言在多個GPU上…

ARC 03 從Github Action job 到 runner pod

Github Action job 分配到集群 背景 job 是 Github Action 的基本單位&#xff0c;每個 job 單獨分配一個 runner。workflow 由一個或者多個 job 組成。如果用戶觸發runs-on字段為arc-runner-set的 job&#xff0c;那么 Github Action 服務器將 job 分配給 listener pod。 源碼…

ubuntu 22.04 anaconda comfyui安裝

背景&#xff1a; 戴爾R740服務器&#xff0c;安裝了proxmox操作系統&#xff0c;配置了顯卡直通。創建了一個ubuntu 22.04 VM虛擬機實例&#xff0c;并安裝了顯卡驅動與cuda等相關配置&#xff1a; 接下來準備搭建一套comfyui的環境&#xff0c;前段時間B站&#xff0c;抖音各…

每日面試題04:volatile字段的原理

在之前面試題02ConcurrentHashMap的底層原理中提到了volatile修飾符&#xff0c;在多線程編程的世界里&#xff0c;數據同步是一道繞不開的坎。當多個線程同時操作共享變量時&#xff0c;“看不見對方的修改”或“代碼順序錯亂”往往會導致程序行為異常。而 volatile作為 Java …

【云原生網絡】Istio基礎篇

文章目錄概述基礎知識技術架構概述數據平面核心組件網絡代理Envoy控制平面核心組件xDS協議Pilot組件其他概述參考博客&#x1f60a;點此到文末驚喜?? 概述 基礎知識 背景知識 服務網格&#xff08;Service Mesh&#xff09;&#xff1a;獨立于應用程序的基礎設施層&#x…

PySpark Standalone 集群

一、PySpark Standalone 集群概述PySpark Standalone 集群是 Apache Spark 的一種部署模式&#xff0c;它不依賴于其他資源管理系統&#xff08;如 YARN 或 Mesos&#xff09;&#xff0c;而是使用 Spark 自身的集群管理器。這種模式適合快速部署和測試&#xff0c;尤其在開發和…

圖像質量評價(Image Quality Assessment,IQA)

文章目錄圖像質量評價&#xff08;Image Quality Assessment&#xff0c;IQA&#xff09;一、評估方式&#xff1a;主觀評估 客觀評估1.1、主觀評估方式1.2、客觀評估方式&#xff1a;全參考 半參考 無參考&#xff08;1&#xff09;全參考的方法對比&#xff08;Full-Refer…

【跟我學YOLO】(2)YOLO12 環境配置與基本應用

歡迎關注『跟我學 YOLO』系列 【跟我學YOLO】&#xff08;1&#xff09;YOLO12&#xff1a;以注意力為中心的物體檢測 【跟我學YOLO】&#xff08;2&#xff09;YOLO12 環境配置與基本應用 【跟我學YOLO】&#xff08;3&#xff09;YOLO12 用于診斷視網膜病變 【跟我學YOLO】&a…

Python爬蟲實戰:研究openpyxl庫相關技術

1. 引言 在當今數字化時代,互聯網上蘊含著海量有價值的數據。如何高效地獲取這些數據并進行分析處理,成為數據科學領域的重要研究方向。網絡爬蟲作為一種自動化的數據采集工具,可以幫助我們從網頁中提取所需的信息。而 openpyxl 作為 Python 中處理 Excel 文件的優秀庫,能…

Redis學習其一

文章目錄1.NoSQL概述1.1概述1.2Nosql的四大分類2.Redis入門2.1概述2.2基礎知識2.2.1基礎命令/語法2.2.2Redis為什么單線程還這么快2.3性能測試3.五大數據類型3.1Redis-key3.2String(字符串)3.3List(列表)3.4Set(集合)3.5Hash&#xff08;哈希&#xff09;3.6Zset&#xff08;有…

高性能架構模式——高性能緩存架構

目錄 一、引入前提二、緩存架構的設計要點2.1、緩存穿透2.1.1、緩存穿透第一種情況:存儲數據不存在2.1.2、緩存穿透第二種情況:緩存數據生成耗費大量時間或者資源2.2、緩存雪崩2.2.1、解決緩存雪崩的第一種方法:更新鎖機制2.2.2、解決緩存雪崩的第二種方法:后臺更新機制2.3…

ubuntu+windows雙系統恢復

文章目錄前言一、恢復windows1.直接在grub命令行輸入exit退出2.手動查找windows引導文件先ls列出所有磁盤和分區查找各個分區是否包含引導文件設置引導分區以及引導文件路徑啟動windows二、在windows系統下刪除Ubuntu殘留引導文件三、準備ubuntu系統引導盤四、安裝ubuntu系統五…

使用Dify構建HR智能助理,深度集成大模型應用,賦能HR招聘管理全流程,dify相關工作流全開源。

HR智能助理系統 &#x1f4cb; 項目概述 HR智能助理系統是一個基于AI技術的人力資源管理平臺&#xff0c;旨在通過智能化工具提升招聘效率&#xff0c;優化候選人評估流程&#xff0c;并提供專業的面試方案生成服務。 &#x1f3af; 核心價值 提升招聘效率60%&#xff1a;自動化…

PowerBI實現僅在需要圖表時顯示圖表

PowerBI實現僅在需要圖表時顯示圖表實現效果點擊維度前&#xff1a;點擊維度后&#xff1a;實現步驟第一步&#xff0c;先創建一個矩陣表和一個柱形圖第二步&#xff0c;添加一個新卡片圖第三步&#xff0c;創建文本度量值Text "? 選擇一個地區"第四步&#xff0c;創…