刷leetcode hot100返航必勝版--鏈表6/3

鏈表初始知識

鏈表種類:單鏈表,雙鏈表,循環鏈表

?

鏈表初始化?

struct ListNode{

? ? ? ? int val;

? ? ? ? ListNode* next;

? ? ? ? ListNode(int x): val(x),next(nullptr) {}

};

//初始化
?

ListNode* head = new ListNode(5);

刪除節點、添加節點?

考慮的邊界

head==nullptr || head->next ==nullptr

處理鏈表的輸入輸出

// 本地測試代碼 (main.cpp)
#include <iostream>
using namespace std;

struct ListNode {
? ? int val;
? ? ListNode *next;
? ? ListNode() : val(0), next(nullptr) {}
? ? ListNode(int x) : val(x), next(nullptr) {}
? ? ListNode(int x, ListNode *next) : val(x), next(next) {}
};

// 粘貼修正后的Solution類

int main() {
? ? // 創建鏈表 1->2->3->4->5
? ? ListNode* head = new ListNode(1);
? ? head->next = new ListNode(2);
? ? head->next->next = new ListNode(3);
? ? head->next->next->next = new ListNode(4);
? ? head->next->next->next->next = new ListNode(5);

? ??
? ? Solution sol;
? ? ListNode* newHead = sol.reverseList(head);
? ??
? ? // 打印結果: 5->4->3->2->1
? ? while (newHead) {
? ? ? ? cout << newHead->val << " ";
? ? ? ? newHead = newHead->next;
? ? }
? ? return 0;
}

ListNode vs ListNode*

?

ListNode node; ? ? ? ? ?// 創建默認節點 (val=0, next=nullptr)
ListNode node2(5); ? ? ?// 創建 val=5 的節點
ListNode node3(10, &node); // 創建 val=10 并指向 node 的節點?

ListNode* ptr = new ListNode(); ? ?// 動態創建節點
ListNode* ptr2 = new ListNode(20); // 動態創建 val=20 的節點

1.相交鏈表【沒想明白】6/31h

160. 相交鏈表 - 力扣(LeetCode)

問題:沒看懂其實找的是指針相同/地址相同,而不是數值相同

法一:哈希表,找b中指針在不在a里

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {//好奇怎么樣處理輸入//請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null //暴力解forfor//我才看懂這個是地址相同不是val相同ListNode*a = headA;ListNode*b = headB;unordered_set<ListNode*>set;while(a!=nullptr){set.insert(a);a = a->next;}while(b!=nullptr){if(set.find(b)!=set.end()){return b;}b = b->next;}return nullptr;}
};

法二:類似數學發現

?

不相交:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {//好奇怎么樣處理輸入//請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null //暴力解forfor//我才看懂這個是地址相同不是val相同ListNode*a = headA;ListNode*b = headB;while(!(a==nullptr && b==nullptr)){if(a == b){return a;}if(a!=nullptr){a = a->next;}else{a = headB;}if(b!=nullptr){b = b->next;}else{b = headA;}}return nullptr;}
};

?2.反轉鏈表【30min】

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

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {if(head == nullptr || head->next == nullptr){return head;}ListNode * p = head;ListNode * q = nullptr;ListNode * r;
//q,p,rwhile(p!=nullptr){r = p->next;p->next = q;q = p;p = r;}return q;     }
};

法二:遞歸【沒咋看】

class Solution {public ListNode reverseList(ListNode head) {if (head == null || head.next == null) {return head;}ListNode newHead = reverseList(head.next);head.next.next = head;head.next = null;return newHead;}
}

?

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

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

相關文章

軟考 系統架構設計師系列知識點之雜項集萃(78)

接前一篇文章&#xff1a;軟考 系統架構設計師系列知識點之雜項集萃&#xff08;77&#xff09; 第139題 以下關于軟件測試工具的敘述&#xff0c;錯誤的是&#xff08;&#xff09;。 A. 靜態測試工具可用于對軟件需求、結構設計、詳細設計和代碼進行評審、走查和審查 B. 靜…

【Unity】云渲染

1 前言 最近在搞Unity云渲染的東西&#xff0c;所以研究了下官方提供的云渲染方案Unity Renderstreaming。注&#xff1a;本文使用的Unity渲染管線是URP。 2 文檔 本文也只是介紹基本的使用方法&#xff0c;更詳細內容參閱官方文檔。官方文檔&#xff1a;Unity Renderstreamin…

組相對策略優化(GRPO):原理及源碼解析

文章目錄 PPO vs GRPOPPO的目標函數GRPO的目標函數KL散度約束與估計ORM監督RL的結果PRM監督RL的過程迭代RL算法流程 GRPO損失的不同版本GRPO源碼解析 DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models PPO vs GRPO PPO的目標函數 J P P O…

Linux或者Windows下PHP版本查看方法總結

確定當前服務器或本地環境中 PHP 的版本,可以通過以下幾種方法進行操作: 1. 通過命令行檢查 這是最直接且常用的方法,適用于本地開發環境或有 SSH 訪問權限的服務器。 方法一:php -v 命令 php -v輸出示例:PHP 8.1.12 (cli) (built: Oct 12 2023 12:34:56) (NTS) Copyri…

[Linux] MySQL源碼編譯安裝

目錄 環境包安裝 創建程序用戶 解壓源碼包 配置cmake ?編輯編譯 安裝 配置修改屬性 屬主和屬組替換成mysql用戶管理 系統環境變量配置 初始化數據庫 服務管理 啟動 環境包安裝 yum -y install ncurses ncurses-devel bison cmake gcc gcc-c 重點強調&#xff1a;采…

【C++項目】負載均衡在線OJ系統-1

文章目錄 前言項目結果演示技術棧&#xff1a;結構與總體思路compiler編譯功能-common/util.hpp 拼接編譯臨時文件-common/log.hpp 開放式日志-common/util.hpp 獲取時間戳方法-秒級-common/util.hpp 文件是否存在-compile_server/compiler.hpp 編譯功能編寫&#xff08;重要&a…

轉戰海外 Web3 遠程工作指南

目錄 一、明確職業目標和技能 二、準備常用軟件 &#xff08;一&#xff09;通訊聊天工具 &#xff08;二&#xff09;媒體類平臺 &#xff08;三&#xff09;線上會議軟件 &#xff08;四&#xff09;辦公協作工具 &#xff08;五&#xff09;云存儲工具 &#xff08;六…

MongoDB賬號密碼筆記

先連接數據庫&#xff0c;新增用戶密碼 admin用戶密碼 use admin db.createUser({ user: "admin", pwd: "yourStrongPassword", roles: [ { role: "root", db: "admin" } ] })用戶數據庫用戶密碼 use myappdb db.createUser({ user: &…

CSS強制div單行顯示不換行

在CSS中&#xff0c;要讓<div>的內容強制單行顯示且不換行&#xff0c;可通過以下屬性組合實現&#xff1a; 核心解決方案&#xff1a; css 復制 下載 div {white-space: nowrap; /* 禁止文本換行 */overflow: hidden; /* 隱藏溢出內容 */text-overflow: e…

RK3568-快速部署codesys runtime

前期準備 PC-win10系統 RK3568-debian系統,內核已打入實時補丁,開啟ssh服務。PC下載安裝CODESYS Development System V3.5.17.0 https://store.codesys.com/en/codesys.html#product.attributes.wrapperPC下載安裝 CODESYS Control for Linux ARM64 SL 4.1.0.0.package ht…

中英混合編碼解碼全解析

qwen模型分詞器怎么映射的:中英混合編碼解碼全解析 中英文混合編碼與解碼的過程,本質是 字符編碼標準(如 UTF-8)對多語言字符的統一處理 ,核心邏輯圍繞“字節序列 ? 字符映射”展開 北京智源人工智能研究院中文tokenID qwen模型分詞器文件 一、編碼階段:統一轉為字節序…

React 事件處理與合成事件機制揭秘

引言 在現代前端開發的技術生態中&#xff0c;React憑借其高效的組件化設計和聲明式編程范式&#xff0c;已成為構建交互式用戶界面的首選框架之一。除了虛擬DOM和單向數據流等核心概念&#xff0c;React的事件處理系統也是其成功的關鍵因素。 這套系統通過"合成事件&qu…

冷雨泉教授團隊:新型視覺驅動智能假肢手,擬人化抓握技術突破,助力截肢者重獲生活自信

研究背景&#xff1a;日常生活中&#xff0c;健康人依靠手完成對物體的操作。對于手部截肢患者&#xff0c;手部的缺失導致他們難以有效地操作物體&#xff0c;進而影響正常的日常生活。擁有一個能夠實現擬人地自然抓取多種日常物體的五指動力假手是手部截肢患者的夙愿&#xf…

android 媒體框架之MediaCodec

一、MediaCodec 整體架構與設計思想 MediaCodec 是 Android 底層多媒體框架的核心組件&#xff0c;負責高效處理音視頻編解碼任務。其架構采用 生產者-消費者模型&#xff0c;通過雙緩沖區隊列&#xff08;輸入/輸出&#xff09;實現異步數據處理&#xff1a; 輸入緩沖區隊列…

Starrocks Full GC日志分析

GC日志樣例&#xff1a; [2025-06-03T07:36:06.1770800] GC(227) Pause Full (G1 Evacuation Pause) [2025-06-03T07:36:06.1960800] GC(227) Phase 1: Mark live objects [2025-06-03T07:36:06.9480800] GC(227) Cleaned string and symbol table, strings: 47009 processed,…

React從基礎入門到高級實戰:React 高級主題 - React 微前端實踐:構建可擴展的大型應用

React 微前端實踐&#xff1a;構建可擴展的大型應用 引言 在2025年的技術生態中&#xff0c;Web應用的規模和復雜性持續增長&#xff0c;微前端&#xff08;Micro Frontends&#xff09;已成為應對大型項目挑戰的主流架構。通過將前端應用拆分為多個獨立模塊&#xff0c;微前…

定時器:中央對齊模式剖析

中央對齊模式&#xff08;Center-Aligned Mode&#xff09;下&#xff0c;當配置為 模式3&#xff08;CMS[1:0] 11&#xff09; 時&#xff0c;定時器會同時觸發 上溢中斷&#xff08;ARR中斷&#xff09; 和 下溢中斷&#xff08;0中斷&#xff09;&#xff0c;即一個PWM周期…

MySQL強化關鍵_019_索引優化

目 錄 一、最左前綴原則 1.完全使用索引 2.部分使用索引 3.不使用索引 4.效率折損 &#xff08;1&#xff09;使用范圍查找 &#xff08;2&#xff09;索引斷開 二、索引失效場景 1. 索引列參與運算 2.索引列模糊查詢以“%”開始 3.索引列是字符串類型&#xff0c;查…

【Oracle】安裝單實例

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Oracle 文章目錄 1. 安裝前的準備工作1.1 硬件和系統要求1.2 檢查系統環境1.3 下載Oracle軟件 2. 系統配置2.1 創建Oracle用戶和組2.2 配置內核參數2.3 配置用戶資源限制2.4 安裝必要的軟件包 3. 目錄結構和環境變量3.1 創建Ora…

6年“豹變”,vivo S30系列引領手機進入場景“體驗定義”時代

出品 | 何璽 排版 | 葉媛 5月29日晚&#xff0c;備受用戶期待的vivo S30系列如約而至。 相比前幾代S系列產品&#xff0c;S30系列變化顯著&#xff0c;堪稱“豹變”。首先&#xff0c;其產品打造思路發生了質變&#xff0c;產品體驗更好&#xff0c;綜合競爭力更為強。其次&a…