摘要:遇到的坑剛拿到這道題就直接做了這樣的判斷,可是萬一是這個(gè)判斷就是錯(cuò)誤的了。思路二上述算法遍歷了兩次鏈表,還額外申請了一個(gè)數(shù)組空間,效率不高,不如直接就地反轉(zhuǎn)鏈表,更改每個(gè)節(jié)點(diǎn)自身的指針。
2018.10.14 來源:劍指offer 題目:反轉(zhuǎn)鏈表
輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后,輸出新鏈表的表頭。
思路一:
把所有鏈表內(nèi)容都輸入到一個(gè)數(shù)組,再次遍歷鏈表,得到數(shù)組反轉(zhuǎn)后的值,最后輸出原來的head,只是值變了。
遇到的坑:
剛拿到這道題就while(currentNode.next)直接做了這樣的判斷,可是萬一head是null,這個(gè)判斷就是錯(cuò)誤的了。就導(dǎo)致了雖然自己測試的時(shí)候代碼是對的。但是??途W(wǎng)的編輯器卻一直通不過。
/*function ListNode(x){ this.val = x; this.next = null; }*/ function ReverseList(pHead) { // write code here var arr = []; var currentNode = pHead; while(currentNode) { arr.push(currentNode.val); currentNode = currentNode.next; } currentNode = pHead; while(currentNode) { currentNode.val = arr.pop(); currentNode = currentNode.next; } return pHead; }
思路二:
上述算法遍歷了兩次鏈表,還額外申請了一個(gè)數(shù)組空間,效率不高,不如直接就地反轉(zhuǎn)鏈表,更改每個(gè)節(jié)點(diǎn)自身的next指針。
function ReverseList(pHead) { if(!pHead) return pHead; var prev = null; var next = null; while(true) { //保存上次 next = pHead.next; pHead.next = prev; if(next === null) break; prev = pHead; pHead = next; } return pHead; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/98358.html
摘要:更多的小算法練習(xí),可以查看我的文章。規(guī)則使用語言,使用函數(shù)獲取傳遞的參數(shù)并使用以下算法對其進(jìn)行修改。將字符串中的每個(gè)字母替換為字母表后面的字母即變?yōu)?,變?yōu)椤H缓髮⑦@個(gè)新字符串,,,,中的每個(gè)元音大寫,并最終返回此修改后的字符串。 雖然都是很簡單的算法,每個(gè)都只需5分鐘左右,但寫起來總會(huì)遇到不同的小問題,希望大家能跟我一起每天進(jìn)步一點(diǎn)點(diǎn)。更多的小算法練習(xí),可以查看我的文章。 規(guī)則 Usi...
摘要:規(guī)則使用語言,讓函數(shù)獲取傳遞的參數(shù),并以相反的順序返回字符串。測試用例思路方法通過把字符串轉(zhuǎn)換成數(shù)組,并使用數(shù)組的反轉(zhuǎn)數(shù)組,然后使用重新拼接成字符串方法向后循環(huán)字符串或字符數(shù)組以生成新字符串 雖然都是很簡單的算法,每個(gè)都只需5分鐘左右,但寫起來總會(huì)遇到不同的小問題,希望大家能跟我一起每天進(jìn)步一點(diǎn)點(diǎn)。更多的小算法練習(xí),可以查看我的文章。 規(guī)則 Using the JavaScript l...
摘要:規(guī)則使用語言,讓函數(shù)獲取傳遞的參數(shù)并返回字符串中的最大單詞。忽略字符串中標(biāo)點(diǎn)符號并假設(shè)不會(huì)為空。測試用例思路通過過濾字符串,并把字符串根據(jù)空格符轉(zhuǎn)換成字符串?dāng)?shù)組通過循環(huán)把獲取字符串?dāng)?shù)組中的長度最長的字符串 雖然都是很簡單的算法,每個(gè)都只需5分鐘左右,但寫起來總會(huì)遇到不同的小問題,希望大家能跟我一起每天進(jìn)步一點(diǎn)點(diǎn)。更多的小算法練習(xí),可以查看我的文章。 規(guī)則 Using the JavaS...
摘要:題目描述代碼思路思路一按行執(zhí)行二分查找,只要該行的第一個(gè)元素小于目標(biāo),就對該行二分查找。思路二從數(shù)組的左下角開始查找,如果當(dāng)前值小于目標(biāo),就向右,即如果當(dāng)前值大于目標(biāo),就向上,即。【題目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代碼思路】 思路一:按行執(zhí)行二分查找,只要該行的第一個(gè)元素小于目...
摘要:題目描述代碼思路思路一按行執(zhí)行二分查找,只要該行的第一個(gè)元素小于目標(biāo),就對該行二分查找。思路二從數(shù)組的左下角開始查找,如果當(dāng)前值小于目標(biāo),就向右,即如果當(dāng)前值大于目標(biāo),就向上,即?!绢}目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代碼思路】 思路一:按行執(zhí)行二分查找,只要該行的第一個(gè)元素小于目...
閱讀 1832·2021-10-11 10:57
閱讀 2453·2021-10-08 10:14
閱讀 3459·2019-08-29 17:26
閱讀 3468·2019-08-28 17:54
閱讀 3079·2019-08-26 13:38
閱讀 3000·2019-08-26 12:19
閱讀 3672·2019-08-23 18:05
閱讀 1360·2019-08-23 17:04