算法訓練營Day4(鏈表)

語言

采用的Java語言,一些分析也是用于Java,請注意。

?24.?兩兩交換鏈表中的節點?

24. 兩兩交換鏈表中的節點 - 力扣(LeetCode)

解題

這道題就是考驗鏈表的基礎操作,但是有個語言方面的知識需要去掌握,就是||? |? &&? &的這幾個的區別,對于這道題影響還是比較大的,我看好多人在問這個

class Solution {public ListNode swapPairs(ListNode head) {ListNode dummy = new ListNode(0,head);ListNode cur = dummy;//dummy 1 2 3 4 5while(cur.next!=null&&cur.next.next!=null){ListNode temp1 = cur.next;//1ListNode temp2 = cur.next.next.next;//3cur.next = cur.next.next;//2cur.next.next=temp1;temp1.next=temp2;cur=cur.next.next;}return dummy.next;}
}

這里說一下:

解釋為什么用&&和空指針問題

這里為什么用&&:(cur.next!=null && cur.next.next !=null)
1、說明了當奇數節點的時候,比如指向4 后面還有個5的時候,cur.next!=null ,但是cur.next.next==null,第二個不滿足條件,就不會在做循環里的反轉,若是||的時候,就會把5也給做判斷,但實際上是不需要判斷的
2、當偶數個節點的時候,4 后面沒有5,那么cur.next==null不滿足第一個條件,直接就會結束
3、注意&&和&的區別,&&的時候,第一個不成立,下一個就不會執行,所以說,cur.next==null了,cur.next.next就不會執行,不用考慮空指針的問題,所以這兩個的位置不能交換

19.刪除鏈表的倒數第N個節點?

19. 刪除鏈表的倒數第 N 個結點 - 力扣(LeetCode)

這到題就注意一下先走n+1步,慢節點就可以倒刪除元素的前一個

比如

1? ?2? ? 3

倒數1個節點

fast=2(1+1) slow=1

fast=3 slow =2

fast=null 循環停止,此時slow=2

slow.next = slow.next.next就把3刪掉。

class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0,head);ListNode fast = dummy;ListNode slow = dummy;//多走1步,slow就會在上一個節點n++;while(n-->0){fast=fast.next;}while(fast!=null){fast=fast.next;slow=slow.next;}slow.next=slow.next.next;return dummy.next;}
}

?面試題?02.07.?鏈表相交?

這道題就是讓長的鏈表先移動幾個距離,和短的鏈表保持一樣,然后一起移動就可以了,并沒有什么難度。

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {int lenA=0;int lenB=0;ListNode curA=headA;ListNode curB=headB;while(curA!=null){lenA++;curA=curA.next;}while(curB!=null){lenB++;curB=curB.next;}ListNode shortLen=null;ListNode longLen = null;if(lenA<lenB){shortLen=headA;longLen=headB;}else {shortLen=headB;longLen=headA;}int len= lenA>lenB?lenA-lenB:lenB-lenA;while (len-->0){longLen=longLen.next;}while(shortLen!=null&&longLen!=null){if(shortLen==longLen){return shortLen;}shortLen=shortLen.next;longLen=longLen.next;}return null;}

?142.環形鏈表II?

142. 環形鏈表 II - 力扣(LeetCode)

這道題呢,就是判斷鏈表有環和找到入環的位置,主要難理解一個為什么slow指針被追上的時候肯定沒到1圈,通俗的一句話就是,你在操場跑步,我是你的二倍速,那么你跑一圈,我肯定跑完兩圈了,之間肯定會有交點。

還有就是為什么會相遇,這個更簡單了,入環的之后,兩者的相對速度是1,相當于走一次,距離就近了一次,肯定會相遇

public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while(fast!=null&&fast.next!=null){slow = slow.next;fast = fast.next.next;if(slow==fast){ListNode head1 = head;while(slow!=head1){head1 = head1.next;slow = slow.next;}return head1;}}return null;}
}

總結(重點!!卡哥遺漏)

鏈表總結的話,主要就是虛擬頭節點使用,然后就是一些邊界處理這里一定要注意,需要有自己的總結,比如說這篇文章24題,我強調的&&號的使用在這道題的意義,這個是需要著重理解的。

以及&&號使用之后,需要注意while循環里的條件是否需要注意空指針的問題,比如24題中,

1 2 3 4?

cur是4 ,cur.next為null,那么因為&&,后面是不會再去判斷的,

因為&&,前面是否,那么直接結束循環了,因此不會有空指針的問題,但是cur.next.next放前面就會了,這是值得注意的

?1 2 3 4 5

cur是4,cur.next不為null,接著才會處理cur.next.next發現為null,也跳出循環,符合我們的要求,這也是視頻中很多人在問| |號行不行,我在這里解釋一下!。

另外,對于類似的這樣問題,我在Day3也有做闡述,可以去關注,將在文章末尾去做。可能看的時候還沒做,我需要時間分析思考,關注即可。

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

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

相關文章

TCP通信

第二十一章 網絡通信 本章節主要講解的是TCP和UDP兩種通信方式它們都有著自己的優點和缺點 這兩種通訊方式不通的地方就是TCP是一對一通信 UDP是一對多的通信方式 接下來會一一講解 TCP通信 TCP通信方式呢 主要的通訊方式是一對一的通訊方式&#xff0c;也有著優點和缺點…

如何在Android平板上遠程連接Ubuntu服務器使用code-server代碼開發

目錄 1.ubuntu本地安裝code-server 2. 安裝cpolar內網穿透 3. 創建隧道映射本地端口 4. 安卓平板測試訪問 5.固定域名公網地址 6.結語 1.ubuntu本地安裝code-server 準備一臺虛擬機,Ubuntu或者centos都可以&#xff0c;這里以VMwhere ubuntu系統為例 下載code server服務…

el-table 表格多選(后端接口搜索分頁)實現已選中的記憶功能。實現表格數據和已選數據(前端分頁)動態同步更新。

實現效果&#xff1a;&#xff08;可拉代碼下來看&#xff1a;vue-demo: vueDemo&#xff09; 左側表格為點擊查詢調用接口查詢出來的數據&#xff0c;右側表格為左側表格所有選擇的數據&#xff0c;由前端實現分頁。 兩個el-table勾選數據聯動更新 實現邏輯&#xff1a; el-…

低代碼開發到底是補品還是垃圾食品?

2023&#xff0c;低代碼徹底火了&#xff0c;甚至火到沒有點相關經驗&#xff0c;都不好意思出去面試的程度。 從業者對低代碼的發展充滿了想象&#xff0c;都認為未來低代碼的商業價值不可估量。 據Gartner的最新報告顯示&#xff0c;2023年全球低代碼開發技術市場規模預計將…

內部文件上傳以及渲染-接口API

文件上傳 地址http://172.16.0.118:8090/api/pm/base/affix/upload請求類型POSTContent-Type:text/plain;charsetutf-8參數 prjData {"prjId":"", "jobId":"3031b2c8-c809-4110-8e88-22c80a9c1ec0721aca89-96a1-4346-9b6e-022331d221d1Nec…

【EMNLP 2023】面向Stable Diffusion的自動Prompt工程算法BeautifulPrompt

近日&#xff0c;阿里云人工智能平臺PAI與華南理工大學朱金輝教授團隊合作在自然語言處理頂級會議EMNLP2023上發表了BeautifulPrompt的深度生成模型&#xff0c;可以從簡單的圖片描述中生成高質量的提示詞&#xff0c;從而使文生圖模型能夠生成更美觀的圖像。BeautifulPrompt通…

【MATLAB】MODWT分解+FFT+HHT組合算法

有意向獲取代碼&#xff0c;請轉文末觀看代碼獲取方式~也可轉原文鏈接獲取~ 1 基本定義 MODWT分解FFTHHT組合算法是一種綜合性的信號處理方法&#xff0c;它結合了經驗小波變換&#xff08;Empirical Wavelet Transform&#xff0c;EWT&#xff09;、快速傅里葉變換&#xff…

25.Oracle的回收站

oracle基礎系統學習目錄 01.CentOS7靜默安裝oracle11g 02.Oracle的啟動過程 03.從簡單的sql開始 04.Oracle的體系架構 05.Oracle數據庫對象 06.Oracle數據備份與恢復 07.用戶和權限管理 08.Oracle的表 09.Oracle表的分區 10.Oracle的同義詞與序列 11.Oracle的視圖 12.Oracle的…

愛智EdgerOS之深入解析如何應用愛智的視頻流模塊完成拉流

一、ONVIF 規范和常見視頻流傳輸協議 ① ONVIF 規范 隨著視頻監控產業鏈的成熟&#xff0c;市面上陸陸續續出現了各式各樣的網絡攝像設備&#xff0c;這些設備都需要通訊協議才能進行數據傳輸。早期廠商都采用私有協議&#xff0c;但是現在廠商分工明確&#xff0c;有的負責生…

程序員的技術成長攻略

推薦語&#xff1a;偶爾在公眾號看到的一篇文章&#xff0c;寫的非常好&#xff0c;在此分享給各位程序員兄弟&#xff0c;不光是對技術成長有幫助&#xff0c;其他領域也是同樣適用的&#xff01;建議反復閱讀&#xff0c;形成一套自己的技術成長策略。 原文地址&#xff1a;…

數據結構與算法:python棧和隊列的用法

python的棧和隊列其實都算作一個數組&#xff0c;棧從最后一個元素開始推出&#xff0c;隊列從第一個元素開始推出 # pop(0)刪除時間復雜度O(n) s [] #棧 q [] #隊列 s.append(1)#1入棧 q.append(1)#1入隊 s.pop()#出棧 q.pop(0)#出隊由于從第一個元素刪除需要挪動數組&…

【EI會議征稿】2024年粵港澳大灣區數字經濟與人工智能國際學術會議(DEAI2024)

2024年粵港澳大灣區數字經濟與人工智能國際學術會議(DEAI2024) 2024 Guangdong-Hong Kong-Macao Greater Bay Area International Conference on Digital Economy and Artificial Intelligence(DEAI2024) 2024年粵港澳大灣區數字經濟與人工智能國際學術會議(DEAI2024)由廣東科…

探索鴻蒙 TextInput組件

TextInput 根據組件名字&#xff0c;可以得知他是一個文本輸出框。 聲明代碼&#x1f447; TextInput({placeholder?:ResourceStr,text?:ResourceStr}); placeholder: 就是提示文本&#xff0c;跟網頁開發中的placeholder一樣的 text&#xff1a;輸入框當前的文本內容 特殊屬…

ChatGPT的進化史

真正的人工智能可以變現的完全與人類一樣思考時&#xff0c;世界會發生什么變化&#xff1f; ChatGPT就如它的名字一樣&#xff0c;人類創造它最初的目的只是一個聊天機器人。聊天嘛&#xff0c;只要你和他對話時他的回答像人類一樣自然就行了&#xff0c;看起來并沒什么了不起…

Linux服務器磁盤占用過高解決思路

服務器在運行時&#xff0c;經常出現磁盤占用過高&#xff0c;可能有如下原因&#xff1a; 1、是否有產生過大的日志文件&#xff0c;或者大文件中的log過大&#xff0c;導致磁盤占用過高&#xff1b; 2、查看磁盤占用情況&#xff0c;分析哪個目錄中文件占比最大&#xff1b; …

貝蒂的搗蛋小游戲~(C語言)

引言&#xff1a; 前面貝蒂已經給大家介紹了選擇&#xff0c;循環結構~&#xff0c;今天貝蒂就基于這兩種結構&#xff0c;為大家講解一種搗蛋小游戲的設計思路和方法哦。 1.游戲要求 游戲要求&#xff1a; 1. 電腦?動?成1~100的隨機數 2. 玩家猜數字&#xff0c;猜數字的過…

52 代碼審計-PHP項目類RCE及文件包含下載刪除

目錄 漏洞關鍵字:演示案例:xhcms-無框架-文件包含跨站-搜索或應用-includeearmusic-無框架-文件下載-搜索或應用功能-down等zzzcms-無框架-文件刪除RCE-搜索或應用-unlink、eval 漏洞關鍵字: SQL注入&#xff1a; select insert update mysql_query mysql等 文件上傳&#xff…

【FreeRTOS】信號量——簡介、常用API函數、注意事項、項目實現

在FreeRTOS中&#xff0c;信號量是一種非常重要的同步機制&#xff0c;用于實現任務間的互斥訪問和同步操作。通過信號量&#xff0c;不同的任務可以安全地共享資源&#xff0c;避免競爭和沖突&#xff0c;從而確保系統的穩定性和可靠性。本篇博客將介紹FreeRTOS中信號量的基本…

常用Nmap腳本

端口掃描類腳本 Nmap是一款非常流行的端口掃描工具&#xff0c;它可以幫助滲透測試工程師識別目標網絡上開放的端口&#xff0c;并提供有關這些端口的詳細信息。Nmap還提供了一系列基于腳本的功能&#xff0c;這些腳本可以擴展Nmap的功能&#xff0c;使其能夠更深入地探測目標網…

使用Huggingface創建大語言模型RLHF訓練流程的完整教程

ChatGPT已經成為家喻戶曉的名字&#xff0c;而大語言模型在ChatGPT刺激下也得到了快速發展&#xff0c;這使得我們可以基于這些技術來改進我們的業務。 但是大語言模型像所有機器/深度學習模型一樣&#xff0c;從數據中學習。因此也會有garbage in garbage out的規則。也就是說…