• Leetcode 19


    题目

    https://leetcode.com/problems/remove-nth-node-from-end-of-list/

    题意

    给出一个链表,要求删掉倒数第n个位置的数值。

    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.
    

    思路

    author's blog == http://www.cnblogs.com/toulanboy/

    先用一个循环统计一下链表的长度len。

    那么题目要求删倒数第n个数值,也就是删掉顺数第len-n+1个数值。

    然后用循环找到该数值的前一个,进行指针修改即可完成删除。

    唯一需要注意的是:若要删除第一个节点,需要特别处理。

    代码

    //author's blog == http://www.cnblogs.com/toulanboy/
    /**
     * 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 * p = head;
            int num = 0;
            while(p){
                num++;
                p = p->next;
            }
            int pos = num - n + 1;
            
            if(pos == 1){
                return head->next;
            }
            p = head;
            int i=0;
            while(p != NULL){
                i++;
                if(i == pos-1)
                    break;
                p = p->next;
            }
            p->next = p->next->next;
            return head;
        }
    };//author's blog == http://www.cnblogs.com/toulanboy/
    

    运行结果

    Runtime: 4 ms, faster than 98.38% of C++ online submissions for Remove Nth Node From End of List.
    Memory Usage: 8.7 MB, less than 58.49% of C++ online submissions for Remove Nth Node From End of List.
    
  • 相关阅读:
    mfc启动画面
    个人冲刺第十天
    个人冲刺第九天
    个人冲刺第八天
    个人冲刺第七天
    个人冲刺第六天
    新一周冲刺计划2
    新一周冲刺
    创意1
    团队绩效与目标
  • 原文地址:https://www.cnblogs.com/toulanboy/p/10913551.html
Copyright © 2020-2023  润新知