leetcode 删除链表的倒数第 N 个结点(19. )

时间:2022-12-24 01:08:14

题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:
leetcode 删除链表的倒数第 N 个结点(19. )
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:
输入:head = [1], n = 1
输出:[]

示例 3:
输入:head = [1,2], n = 1
输出:[1]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

提示:
链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz

题解思路

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode* middle_node = head;
        int count=1;
        int current_index = 1;
        while(head)
        {
            count = count+1;
            head = head->next;
        }
        int cc = 1;
        while(middle_node)
        {
            if(count%2==0 && cc==count/2)
            {
                return middle_node;
                break;
            }
            else if(count%2==1 && cc==count/2)
            {
                return middle_node->next;
                break;
            } 
            cc+=1;
            middle_node = middle_node->next;
        }

        return middle_node;
    }
};