java中怎么用listnode截取鏈表前n個(gè)元素

小億
97
2024-03-13 12:45:42
欄目: 編程語言

要截取鏈表的前n個(gè)元素,可以使用雙指針的方法來實(shí)現(xiàn)。

具體步驟如下:

  1. 定義兩個(gè)指針,一個(gè)指向鏈表的頭節(jié)點(diǎn)head,另一個(gè)指向null。
  2. 使用一個(gè)計(jì)數(shù)器count來記錄當(dāng)前遍歷的節(jié)點(diǎn)個(gè)數(shù)。
  3. 遍歷鏈表,每遍歷一個(gè)節(jié)點(diǎn),計(jì)數(shù)器加1,直到計(jì)數(shù)器等于n為止。
  4. 此時(shí)第二個(gè)指針指向的位置就是需要截取鏈表的位置。
  5. 截取鏈表前n個(gè)元素后,將第一個(gè)指針指向null,即將鏈表截?cái)唷?/li>

以下是一個(gè)示例代碼:

public ListNode truncate(ListNode head, int n) {
    ListNode dummy = new ListNode(0);
    dummy.next = head;
    
    ListNode slow = dummy;
    ListNode fast = dummy;
    
    for (int i = 0; i < n; i++) {
        fast = fast.next;
    }
    
    while (fast.next != null) {
        slow = slow.next;
        fast = fast.next;
    }
    
    ListNode newHead = slow.next;
    slow.next = null;
    
    return newHead;
}

以上代碼中,ListNode是一個(gè)節(jié)點(diǎn)類,其中包括一個(gè)整型值val和一個(gè)指向下一個(gè)節(jié)點(diǎn)的指針next。truncate方法接收一個(gè)頭節(jié)點(diǎn)和一個(gè)整數(shù)n作為參數(shù),返回截取后的鏈表頭節(jié)點(diǎn)。

0