每日一題-Day31-刪除連結串列的倒數第n個節點
阿新 • • 發佈:2021-11-22
雙指標
題目
給你一個連結串列,刪除連結串列的倒數第 n
個結點,並且返回連結串列的頭結點。
示例:
輸入:head = [1,2,3,4,5], n = 2
輸出:[1,2,3,5]
解題思路
快慢指標:第一個指標先移動n個節點,然後兩個指標同時開始移動,當第一個指標移動到連結串列的結尾節點時,第二個節點移動到倒數第n+1個節點,此時利用連結串列的性質即可刪除倒數第n個節點
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode temp1 = head; ListNode temp2 = head; for (int i = 0; i < n; i++){ temp1 = temp1.next; } if (temp1 == null) { return head.next; }else { while(temp1.next != null){ temp1 = temp1.next; temp2 = temp2.next; } temp2.next = temp2.next.next; } return head; } }
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/