19. Remove Nth Node From End of List

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

Example 1:

复制代码
Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2:

复制代码
Input: head = [1], n = 1
Output: []

Example 3:

复制代码
Input: head = [1,2], n = 1
Output: [1]

Constraints:

  • The number of nodes in the list is sz.
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

Follow up: Could you do this in one pass?

复制代码
/**
 * 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* removeNthFromEnd(ListNode* head, int n) {
        ListNode*curr=head;
        int count=0;
        while(curr!=NULL){
            count++;
            curr=curr->next;
        }
        int cnt=count-n+1;
        struct ListNode*dummyHead=new ListNode(0,head);
        struct ListNode*pre=dummyHead;
        count=0;
        while(pre->next!=NULL){
            count++;
            if(count==cnt){
                pre->next=pre->next->next;
            }else{
                pre=pre->next;
            }
        }
        ListNode*ret=dummyHead->next;
        delete dummyHead;
        return ret;
    }
};

注意:

我的这种方法是最容易想到的,先遍历一遍链表得到链表长度,需要注意的一点只有count++放的位置了。

相关推荐
月盈缺1 小时前
学习嵌入式的第二十四天——数据结构——队列和树
数据结构·学习
iFlyCai5 小时前
鸿蒙开发中的List组件详解
华为·list·harmonyos
Y4090016 小时前
Java算法之排序
java·数据结构·笔记·算法
艾莉丝努力练剑8 小时前
【C语言16天强化训练】从基础入门到进阶:Day 6
c语言·数据结构·学习·算法
快去睡觉~9 小时前
力扣1005:k次取反后最大化的数组和
数据结构·算法·leetcode
想不明白的过度思考者9 小时前
初识数据结构——Map和Set:哈希表与二叉搜索树的魔法对决
数据结构·散列表
天意生信云9 小时前
生信分析自学攻略 | R语言数据筛选和修改
数据结构·经验分享·r语言
月盈缺9 小时前
学习嵌入式第二十三天——数据结构——栈
数据结构·学习
凯子坚持 c12 小时前
Redis 数据类型:List 列表的深度解析与应用
数据库·redis·list
fs哆哆21 小时前
在VB.net中一维数组,与VBA有什么区别
java·开发语言·数据结构·算法·.net