鏈表OJ--下

文章目錄

  • 前言
  • 一、鏈表分割
  • 二、環形鏈表I
  • 三、環形鏈表II
  • 四、鏈表的回文結構
  • 五、隨機鏈表的復制


前言

一、鏈表分割

牛客網CM11:鏈表分割- - -點擊此處傳送
在這里插入圖片描述
題解:
思路圖:
在這里插入圖片描述
代碼:
在這里插入圖片描述

二、環形鏈表I

力扣141:環形鏈表- - -點擊此處傳送
在這里插入圖片描述
思路圖:
在這里插入圖片描述
擴展問題:
在這里插入圖片描述

代碼:

bool hasCycle(struct ListNode *head) {struct ListNode*fast=head,*slow=head;while(fast && fast->next){//slow走一步slow=slow->next;//fast走兩步fast=fast->next->next;//若相等(相遇)則有環,返回true并退出程序if(fast==slow){return true;}}//否則無環return false;
}

三、環形鏈表II

力扣142:環形鏈表II- - -點擊此處傳送
在這里插入圖片描述
題解:
思路圖:
在這里插入圖片描述
代碼:

struct ListNode *detectCycle(struct ListNode *head) {struct ListNode*fast=head;struct ListNode*slow=head;while(fast && fast->next){slow=slow->next;fast=fast->next->next;if(fast==slow){struct ListNode*meet=slow;while(head != meet){head=head->next;meet=meet->next;}return meet;}}return NULL;
}

四、鏈表的回文結構

牛客網OR36:鏈表的回文結構- - -點擊此處傳送
在這里插入圖片描述
思路圖:
在這里插入圖片描述

代碼:

struct ListNode*reverseList(struct ListNode*head){struct ListNode*cur=head;struct ListNode*newhead=NULL;while(cur){struct ListNode*next=cur->next;cur->next=newhead;newhead=cur;cur=next;}return newhead;}struct ListNode*middleNode(struct ListNode*head){struct ListNode*slow=head;struct ListNode*fast=head;while(fast && fast->next){slow=slow->next;fast=fast->next->next;}return slow;}bool chkPalindrome(ListNode* head) {struct ListNode*mid=middleNode(head);struct ListNode*rhead=reverseList(mid);while(head && rhead){if(head->val != rhead->val)return false;head=head->next;rhead=rhead->next;}return true;}

五、隨機鏈表的復制

力扣138:隨機鏈表的復制- - -點擊此處傳送
在這里插入圖片描述
思路圖:
在這里插入圖片描述
代碼:

struct Node* copyRandomList(struct Node* head) 
{struct Node*cur=head;while(cur){struct Node*copy=(struct Node*)malloc(sizeof(struct Node));copy->val=cur->val;copy->next=cur->next;cur->next=copy;cur=copy->next;} cur=head;while(cur){struct Node*copy=cur->next;if(cur->random==NULL){copy->random=NULL;}else{copy->random=cur->random->next;}cur=copy->next;}cur=head;struct Node*newhead=NULL;struct Node*tail=NULL;while(cur){struct Node*copy=cur->next;struct Node*next=copy->next;if(tail==NULL){newhead=tail=copy;}else{tail->next=copy;tail=tail->next;}cur->next=next;cur=next;}return newhead;
}

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

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

相關文章

使用SpringBoot集成MyBatis對管理員的查詢操作

增刪改查中的查詢操作,對所有的普通管理員進行查詢操作。 效果展示: 不僅可以在打開頁面時進行對管理員的自動查詢操作,還可以在輸入框進行查詢。 首先是前端向后端發送POST請求,后端接收到請求,如果是有參數傳到后端…

【uni-app】uniapp中彈出輸入框的示例

uni.showModal({title: 請輸入企業名稱,content: ,editable: true, //是否顯示輸入框placeholderText: 請輸入企業名稱, //輸入框提示內容confirmText: 確認,cancelText: 取消,success: (res) > {if (res.confirm) {this.checkDesc.name res.content;// console.log(輸入的…

內部網關協議_路由信息協議RIP_開放路徑優先OSPF協議_基本知識

目錄: 因特網路由選擇協議概述 路由信息協議RIP 開放路徑優先OSPF協議 因特網路由選擇協議概述 一.路由選擇分類 靜態路由選擇和動態路由選擇 靜態路由選擇: 采用人工配置的方式給路由器添加網絡路由、默認路由和特定主機路由等路由條目。靜態路由選擇簡單、開銷小&#…

移動端的自動化基于類實現啟動一次應用跑全部用例

1.unittest框架 class TestStringMethods(unittest.TestCase): def setUp(self) -> None: # 每一條測試用例開始前執行 print("setup") def tearDown(self) -> None: # 每一條測試用例結束后執行 print("teardown") …

八、ffmpeg錄制視頻為yuv文件

前言 測試環境: ffmpeg的4.3.2自行編譯版本windows環境qt5.12 圖片的一些重要知識: RGB圖片 位深度:每一個像素都會使用n個二進制位來存儲顏色信息。每一個像素的顏色都是由紅(Red)、綠(Green&#xff0…

【python】python旅游網數據抓取分析(源碼+論文)【獨一無二】

👉博__主👈:米碼收割機 👉技__能👈:C/Python語言 👉公眾號👈:測試開發自動化【獲取源碼商業合作】 👉榮__譽👈:阿里云博客專家博主、5…

C語言——結構體的應用

歸納編程學習的感悟, 記錄奮斗路上的點滴, 希望能幫到一樣刻苦的你! 如有不足歡迎指正! 共同學習交流! 🌎歡迎各位→點贊 👍 收藏? 留言?📝 路還在繼續,夢還在期…

webGL技術開發的軟件類型

WebGL 是一種在瀏覽器中渲染 2D 和 3D 圖形的 JavaScript API。通過 WebGL,你可以創建各種類型的軟件項目,特別是那些需要強大圖形渲染能力的項目。以下是一些你可以使用 WebGL 實現的軟件項目類型,希望對大家有所幫助。北京木奇移動技術有限…

老生常談之 JavaScript 中 0.1 + 0.2 != 0.3 的原因

先來一個模棱兩可的說法:因為精度丟失、存儲溢出的問題 先復習一下二進制的轉換方法: 整數:除以基數,取余,自底向上小數:乘以基數,取整,自頂向下 接著,復習一下雙精度…

Linux使用操作

各類小技巧 ctrlc強制停止 ctrld退出賬戶的登錄 或者退出某些特定程序的專屬頁面 history 查看歷史命令 !命令前綴,自動執行上一次匹配前綴的命令 ctrlr 輸入內容去匹配歷史命令 光標移動快捷鍵 ctrla,跳到命令開頭 ctrle,跳到命令結尾…

【C語言_題庫】輸入4個整數,要求按照從小到大的順序輸出

題目 輸入4個整數 要求按照從小到大的順序輸出 書上的學習輔導答案 // 主要部分 int main(){int t,a,b,c,d;printf("請輸入四個數:");scanf("%d,%d,%d,%d"

SkyWalking全景解析:從原理到實現的分布式追蹤之旅

🎏:你只管努力,剩下的交給時間 🏠 :小破站 SkyWalking全景解析:從原理到實現的分布式追蹤之旅 前言第一:SkyWalking簡介第二:實現原理概覽第三:主鍵與架構第四&#xff1…

【計算機基礎】通過插件plantuml,實現在VScode里面繪制狀態機

📢:如果你也對機器人、人工智能感興趣,看來我們志同道合? 📢:不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸對你有幫助,可點贊 👍…

數學與她的

文章目錄 定義域函數的定義域:一般地復合函數求解極值,單調性綜合考題: 定義域 函數的定義域: 求定義域的原則性問題(通用)分母不為0 偶次根式的被開方式為非負( ≥ 0 ) 偶次根式的…

redis運維(十五) 集合

一 集合 ① 概念 集合的元素在redis里面的世界是member集合: setset集合當中不允許重復的元素,而且set集合當中元素是沒有順序的,不存在元素下標 ② sadd、smembers、srem ③ sismember、srandmember、spop、scard spop 命令用于移除集合中的指定 …

sql語法大全

1,創建數據庫 create database 數據庫名字; 2,查看所有的數據庫名稱 show databases; MySQL服務器已有4個數據庫,這些數據庫都是MySQL安裝時自動創建的。 information_schema 和 performance_schema 數據庫分別是 MySQL 服務器的數據字典(…

CSS 漸變

linear-gradient() 線性漸變 /* 漸變軸為 45 度,從藍色漸變到紅色 */ linear-gradient(45deg, blue, red);/* 從右下到左上、從藍色漸變到紅色 */ linear-gradient(to left top, blue, red); /* to [left/right] [top/bottom] *//* 色標:從下到上&#…

算法——滑動窗口(Sliding Window)

一、背景知識 滑動窗口算法(Sliding Window): 在給定數組 / 字符串上維護一個固定長度或不定長度的窗口。可以對窗口進行滑動操作、縮放操作,以及維護最優解操作。題型一:固定長度題型二:不固定長度 二、例…

TypeScript 學習筆記 第二部分 webpack 創建typescript項目

【視頻鏈接】尚硅谷TypeScript教程(李立超老師TS新課) 創建webpack 項目 IDE:webstorm 新建一個空的項目運行npm init初始化項目目錄結構 1. 安裝 webpack:構建工具webpack-cli: webpack的命令行工具typescript&am…

PCIE鏈路訓練-狀態機描述1

狀態機描述 Config.linkwidth.start: 1. (1)Linkup 0 狀態機沒有執行鏈路寬度的升級(upconfiguration of the Link width):那么tx會在所有active的dsp上發送TS1,其中link num為具體內容&a…