List存放連結串列結點-LeetCode19-刪除連結串列的倒數第N個節點
阿新 • • 發佈:2018-12-04
題目
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:
給定的 n 保證是有效的。
進階:
你能嘗試使用一趟掃描實現嗎?
思路1
遍歷一趟連結串列,將每個連結串列結點都存放到list中。
程式碼1
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { List<ListNode> l=new ArrayList<ListNode>(); while(true){ l.add(head); head=head.next; if(head==null){ break; } } if(l.size()==n){ if(l.size()==1){ return null; }else{ return l.get(1); } } ListNode delbefore1=l.get(l.size()-n-1); delbefore1.next=delbefore1.next.next; return l.get(0); } }
思路2
主流解法:雙指標。
https://blog.csdn.net/zjc_game_coder/article/details/78500566
關鍵
1.List存放連結串列結點
2.雙指標