問題やアイデアの意味
質問の意味:少し(あなただけのカレンダーをできれば質問の注意:?意味は、削除するノードを見つけ、何度も尋ねました)
アイデア:愚かな方法の始まり@は、コメントのトピックを参照してくださいませんでした。ヘッド反転単鎖補間付き。。。非常に愚かな方法で、詳細はコード1を参照してください。@の後に適切な指導、ダブルポインタ法を用いた方法を得ます。アイデアは、おおよそ次のとおりです。
コード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) { ListNode top = new ListNode(Integer.MIN_VALUE); top.next = head; ListNode p = top; if(n==1){ while(p.next.next!=null) p = p.next; p.next = null; return top.next; } top = reverseList(head); p = top.next; int id = 0; while(p!=null){ if(++id==n-1){ if(p.next!=null) p.next = p.next.next; else p.next = null; } p = p.next; } return reverseList(top.next).next; } private ListNode reverseList(ListNode head){ ListNode top = new ListNode(Integer.MIN_VALUE); top.next = null; ListNode t,p=head; while((t=p)!=null){ p = p.next; t.next = top.next; top.next = t; } return top; } }