如何用電腦主機做網(wǎng)站網(wǎng)頁自動點擊軟件
通過學習基礎(chǔ),發(fā)現(xiàn)我的基本功還得需要再練練,思路得再更加清晰明了,這樣子做算法題才能駕輕就熟。每天記錄自己的進步。
一、兩兩交換
題目編號:24
題目描述:
給你一個鏈表,兩兩交換其中相鄰的節(jié)點,并返回交換后鏈表的頭節(jié)點。你必須在不修改節(jié)點內(nèi)部的值的情況下完成本題(即,只能進行節(jié)點交換)。
依然采用虛擬頭節(jié)點,本題還需要定一個臨時temp變量,用來臨時保存節(jié)點。
圖解思路:
JS 代碼如下,完全是按照卡爾的視頻講解來的,放在leetcode上可以提交通過:
var swapPairs = function(head) {const dummyHead = new ListNode();//虛擬頭節(jié)點指向鏈表的真實頭節(jié)點dummyHead.next = head;//定一個一個臨時指針,用來遍歷鏈表let curr = dummyHead;//循環(huán)的終止條件,二者的順序一點也不能交換while (curr.next && curr.next.next) {//臨時指針,趁節(jié)點的指向還沒變,先保存一下,免得要用的時候沒有const temp = curr.next;const temp1 = curr.next.next.next;//開始進行節(jié)點交換curr.next = curr.next.next;curr.next.next = temp;temp.next = temp1;//向后移動curr = curr.next.next;}return dummyHead.next;};
二、刪除節(jié)點
題目編號:19
題目描述:
給你一個鏈表,刪除鏈表的倒數(shù)第?
n
?個結(jié)點,并且返回鏈表的頭結(jié)點。
思路圖解:
具體的JS代碼如下,在力扣上可以通過提交的:
// 用雙指針去解決這道題
var removeNthFromEnd = function(head, n) {// 創(chuàng)建虛擬頭節(jié)點const dummyHead = new ListNode()// 讓虛擬頭節(jié)點指向頭節(jié)點dummyHead.next = head;let fast = dummyHead;let slow = dummyHead;// 先讓fast指針移動n + 1步while (n >= 0) {fast = fast.next;n--;}// 遍歷鏈表,當fast指針為null的時候,slow指針正好停留在倒數(shù)第n個節(jié)點的前一個節(jié)點while (fast != null) {fast = fast.next;slow = slow.next;}// 通過slow執(zhí)行刪除操作slow.next = slow.next.next;// 返回刪除后的節(jié)點return dummyHead.next;
};
三、鏈表相交
?題目編號:面試題 02.07. 鏈表相交
題目描述:
給你兩個單鏈表的頭節(jié)點?
headA
?和?headB
?,請你找出并返回兩個單鏈表相交的起始節(jié)點。如果兩個鏈表沒有交點,返回?null
?。
思路圖解:
JS代碼如下,是可以在leetcode上提交通過的:
// 封裝一個方法用來獲取鏈表的長度function getLinkLength(head) {let len = 0, curr = head;while (curr) {len++;curr = curr.next;}return len;}
var getIntersectionNode = function(headA, headB) {let currA = headA, currB = headB,lenA = getLinkLength(headA),lenB = getLinkLength(headB);// 讓A鏈表始終為長的那個鏈表if (lenA < lenB) {[currA, currB] = [currB, currA];[lenA, lenB] = [lenB, lenA];}let i = lenA - lenB;// 讓currA向前移動i步,保持移動之后的鏈表A和鏈表B是長度相同的while (i-- > 0) {currA = currA.next;}// 此時開始對兩個鏈表遍歷,若兩鏈表不相等,指針向后移動,繼續(xù)比較while (currA && currA != currB) {currA = currA.next;currB = currB.next;};// 若兩鏈表相等,則直接返回return currA;
};
四、環(huán)形鏈表
?題目編號:142:環(huán)形鏈表
題目描述:
給定一個鏈表的頭節(jié)點 ?
head
?,返回鏈表開始入環(huán)的第一個節(jié)點。?如果鏈表無環(huán),則返回?null
。
?