/**
* 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 prehead = new ListNode(-1);
// ListNode prev = prehead , node = head;
// int length = 0;
// while(node != null) { //得到链表的长度
// length ++;
// node = node.next;
// }
// if(n == length) {
// return head.next;
// }
// int k = 0;
// while(k < length - n ) {
// prev.next = head;
// prev = prev.next;
// head = head.next;
// k ++;
// }
// if(n != 1){
// prev.next = head.next;
// }
// else{
// prev.next = null;
// }
// return prehead.next;
// }
// }
//方法二:直接在链表上修改
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode ret = head;
ListNode node = head;
int length = 0;
while(node != null) { //得到链表的长度
length ++;
node = node.next;
}
if(n == length) {
return head.next;
}
int k = 0;
while(k < length - n - 1 ) {
head = head.next;
k ++;
}
if(n == 1) {
head.next = null;
}
else{
head.next = head.next.next;
}
return ret;
}
}
* 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 prehead = new ListNode(-1);
// ListNode prev = prehead , node = head;
// int length = 0;
// while(node != null) { //得到链表的长度
// length ++;
// node = node.next;
// }
// if(n == length) {
// return head.next;
// }
// int k = 0;
// while(k < length - n ) {
// prev.next = head;
// prev = prev.next;
// head = head.next;
// k ++;
// }
// if(n != 1){
// prev.next = head.next;
// }
// else{
// prev.next = null;
// }
// return prehead.next;
// }
// }
//方法二:直接在链表上修改
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode ret = head;
ListNode node = head;
int length = 0;
while(node != null) { //得到链表的长度
length ++;
node = node.next;
}
if(n == length) {
return head.next;
}
int k = 0;
while(k < length - n - 1 ) {
head = head.next;
k ++;
}
if(n == 1) {
head.next = null;
}
else{
head.next = head.next.next;
}
return ret;
}
}