您的位置:首页 > Web前端 > Node.js

leetcode-19 Remove Nth Node From End of List

2015-03-14 12:37 447 查看
这题的关键是如何找到倒数等N个节点

双指针fast、slow

fast先走N-1步,然后fast、slow同时走,指到fast到达链表尾部

<span style="font-family:Microsoft YaHei;font-size:14px;">/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *removeNthFromEnd(struct ListNode *head, int n) {
    if(head == NULL){
        return head;
    }
    struct ListNode helper;
    struct ListNode *pre;
    struct ListNode *cur;
    
    helper.next = head;
    pre = &helper;
    cur = &helper;
    
    int i;
    for(i = 0; i < n; i++){
        cur = cur->next;
    }
    while(cur  && cur ->next){
        cur = cur->next;
        pre = pre->next;
    }
    
    pre->next = pre->next->next;
    return helper.next;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: