摘要:題目輸入一個(gè)鏈表,輸出該鏈表中倒數(shù)第個(gè)結(jié)點(diǎn)。思路簡(jiǎn)單思路循環(huán)到鏈表末尾找到在找到節(jié)點(diǎn)需要循環(huán)兩次。優(yōu)化設(shè)定兩個(gè)節(jié)點(diǎn),間距相差個(gè)節(jié)點(diǎn),當(dāng)前面的節(jié)點(diǎn)到達(dá)終點(diǎn),取后面的節(jié)點(diǎn)。本題目著重考察代碼魯棒性容錯(cuò)率需要考慮為,為,大于鏈表長(zhǎng)度的情況代碼
題目
輸入一個(gè)鏈表,輸出該鏈表中倒數(shù)第k個(gè)結(jié)點(diǎn)。
思路簡(jiǎn)單思路: 循環(huán)到鏈表末尾找到 length 在找到length-k節(jié)點(diǎn) 需要循環(huán)兩次。
優(yōu)化:設(shè)定兩個(gè)節(jié)點(diǎn),間距相差k個(gè)節(jié)點(diǎn),當(dāng)前面的節(jié)點(diǎn)到達(dá)終點(diǎn),取后面的節(jié)點(diǎn)。
前面的節(jié)點(diǎn)到達(dá)k后,后面的節(jié)點(diǎn)才出發(fā)。
本題目著重考察代碼魯棒性、容錯(cuò)率: 需要考慮head為null,k為0,k大于鏈表長(zhǎng)度的情況
代碼function FindKthToTail(head, k) { if (!head || !k) return null; let front = head; let behind = head; let index = 1; while (front.next) { index++; front = front.next; if (index > k) { behind = behind.next; } } return (k <= index) && behind; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/108891.html
摘要:劍指中鏈表相關(guān)題目俗話說(shuō)光說(shuō)不練假把式,既然學(xué)習(xí)了鏈表的基礎(chǔ)概念和基本操作那我們一定要找些題目鞏固下,下面來(lái)看劍指中的相關(guān)題目。題目分析合并兩個(gè)排序的鏈表,需要分別比較兩個(gè)鏈表的每個(gè)值,然后改變指針。 溫故知新 鏈表由一個(gè)一個(gè)的作為節(jié)點(diǎn)的對(duì)象構(gòu)成的,每一個(gè)節(jié)點(diǎn)都有指向下一個(gè)節(jié)點(diǎn)的指針,最后一個(gè)節(jié)點(diǎn)的指針域指向空。每個(gè)節(jié)點(diǎn)可以存儲(chǔ)任何數(shù)據(jù)類型。 根據(jù)類型可以分為單鏈表、雙鏈表、環(huán)形鏈表、...
摘要:思路查找倒數(shù)第個(gè)節(jié)點(diǎn),可以看做是查找正序第個(gè)節(jié)點(diǎn)可以根據(jù)第一題的結(jié)果取數(shù)組的第個(gè)節(jié)點(diǎn)使用思路輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后,輸出新鏈表的表頭。 前言 ??在寫項(xiàng)目的時(shí)候會(huì)發(fā)現(xiàn),并沒(méi)有使用很多關(guān)于鏈表的東西,大多數(shù)情況使用的都是數(shù)組,但是由于在準(zhǔn)備校招,很多公司都會(huì)考到這個(gè)問(wèn)題,所以準(zhǔn)備對(duì)鏈表的相關(guān)操作進(jìn)行總結(jié),并對(duì)其中的重難點(diǎn)進(jìn)行強(qiáng)調(diào),最后還會(huì)附加幾道關(guān)于鏈表的算法題,那么現(xiàn)在就開始吧! ...
閱讀 4600·2021-11-24 10:24
閱讀 1504·2021-11-22 15:22
閱讀 2271·2021-11-17 09:33
閱讀 2598·2021-09-22 15:29
閱讀 583·2019-08-30 15:55
閱讀 1736·2019-08-29 18:42
閱讀 2808·2019-08-29 12:55
閱讀 1855·2019-08-26 13:55