玩转算法值面试-第五章 -在链表中穿针引线
5-123
數(shù)組中可以隨機(jī)訪問(wèn),相反鏈表就不行
leetcode:206
反轉(zhuǎn)一個(gè)鏈表,鏈表如果沒(méi)有特別聲明,則節(jié)點(diǎn)的值不發(fā)生改變
一共需要三個(gè)指針:current指向當(dāng)前需要處理的指針
next指向當(dāng)前需要處理的元素的下一個(gè)元素的指針
pre保存修改之后鏈表指向的指針
首先實(shí)現(xiàn)一個(gè)節(jié)點(diǎn)的反轉(zhuǎn)
然后將pre、cur、next進(jìn)行更新(向后移動(dòng)一個(gè)指針
pre更新為cur指針
cur更新為next指針
next由于本身的更新指向下一個(gè)元素的位置
然后再重復(fù)前面的操作:將cur指向pre指針,然后更新pre、cur、next指針
練習(xí)題:leetcode 92
思考題:leetcode 83
leetcode86
leetcode 328題
設(shè)立鏈表的虛擬頭結(jié)點(diǎn)
舉例:如刪除3的元素
該邏輯對(duì)刪除最后一個(gè)元素依然使用,對(duì)刪除第一個(gè)元素不適用。
增加一個(gè)虛擬變量
練習(xí)題:leetcode 82
leetcode 21
5-4 5 6
leetcode 24
創(chuàng)建幾個(gè)指針去預(yù)先保留要處理的幾個(gè)節(jié)點(diǎn)
思考:可不可以不用next
練習(xí)題:leetcode 25
leetcode 147 為一個(gè)鏈表進(jìn)行插入排序
leetcode 148 SORT LIST
寫一個(gè)排序算法,用O(n *logn)的時(shí)間復(fù)雜度為一個(gè)鏈表進(jìn)行排序
自頂向上,自頂向下
雙指針技術(shù)
leetcode 19題
優(yōu)化之后:只遍歷一遍鏈表,p和q之間的距離一定,p之前有多少個(gè)點(diǎn)不確定,當(dāng)q移到NULL時(shí)停止。
總結(jié)
以上是生活随笔為你收集整理的玩转算法值面试-第五章 -在链表中穿针引线的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大话知识图谱--构建知识图谱第一步定义数
- 下一篇: 金融时报:人工智能在银行中的应用—对全球