leetcode:Remove Nth Node From End of List

Given a linked list, remove thenthnode from the end of list and return its head.

For example,

Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, the linked list becomes 1->2->3->5.

Note:Givennwill always be valid.

Try to do this in one pass.

算法:

1 准备两个指针first, second

2 先让fisrt走n步

3 让fisrt和second同时走直到first遇到结尾

4 要用一个temp指针来记录second前一个node,用来删除second用。

/** * Definition for singly-linked list. * struct ListNode { *int val; *ListNode *next; *ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode *first = head, *second = head;ListNode *temp = second;for(int i = 0; i < n; i++) {first = first -> next;}while(first) {first = first -> next;temp = second;second = second -> next;}if(second == head) {head = head -> next;}else {temp -> next = second -> next;}return head;}};

版权声明:本文为博主原创文章,未经博主允许不得转载。

,思念是一种幸福的忧伤,是一种甜蜜的惆怅,是一种温馨的痛苦;

leetcode:Remove Nth Node From End of List

相关文章:

你感兴趣的文章:

标签云: