LeetCode Valid Parentheses Remove Nth Node From End of List

    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head==null)
            return null;
        if(n==0)//如果n==0
            return head;
        Map<Integer,ListNode> map=new HashMap<Integer, ListNode>();
        int i=0;
        ListNode temp=head;
        do
        {
            map.put(++i, temp);
            temp=temp.next;
        }
        while(temp!=null);
        if(n>i)//if n > length
            return head;
        //now n>0 && n<=i
        map.remove(i+1-n);
        //if first
        if(n==1)
        {
            if(i==1)
                return null;
            ListNode listNode=map.get(i-1);
            listNode.next=null;//假如只是将listNode置空,并没有什么卵用,结果会输出全部,因为前一个对象保存着该对象的引用
            return head;
        }
        //if end
        if(n==i)
            return map.get(2);
        //从n开始往后重新链接
        map.get(i-n).next=map.get(i+2-n);
        return head;
    }

这里很需要注意的地方:

1、map里面存放的是对象的引用,remove只是删除集合中对象的引用

2、这道题中,假如只是将引用指向null,并不能将销毁对象本身,在链表中,还有其他地方引用了该对象。

3、考虑问题要全面,以后每次做题要将所有情况都列出来!

时间: 2024-09-30 15:06:13

LeetCode Valid Parentheses Remove Nth Node From End of List的相关文章

Leetcode 线性表 Remove Nth Node From End of List

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Remove Nth Node From End of List Total Accepted: 12160 Total Submissions: 41280 Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1

[Leetcode][Python]19: Remove Nth Node From End of List

# -*- coding: utf8 -*-'''__author__ = '[email protected]' 19: Remove Nth Node From End of Listhttps://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/ Given a linked list, remove the nth node from the end of list and return its head. For ex

LeetCode[Linked List]: Remove Nth Node From End of List

Given a linked list, remove the nth node 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: Given

LeetCode 19: Remove Nth Node From End of List

Given a linked list, remove the nth node 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: Given

【LeetCode】 19. Remove Nth Node From End of List 解题小结

题目: Given a linked list, remove the nth node 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. 首先容易想到的是

【LeetCode OJ】Remove Nth Node From End of List

题目:Given a linked list, remove the nth node 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. struct Li

leetcode笔记:Remove Nth Node From End of List

一. 题目描述 Given a linked list, remove the n th node 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. Not

LeetCode(19) - Remove Nth Node From End of List

题目要求是,给你一个单向链表,和一个数字n,删除该链表倒数第n个node,其中测试案例中n能保证一定有效. 思路很简单,用两个指针,它们两个相隔为n,当后面的指针指向链表尾的时候,前面的指针指向的node的下一个node,就是要删除的那一个. 代码如下: 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int

【LeetCode】19. Remove Nth Node From End of List

题目: 思路:如果链表为空或者n小于1,直接返回即可,否则,让链表从头走到尾,每移动一步,让n减1. 1.链表1->2->3,n=4,不存在倒数第四个节点,返回整个链表 扫过的节点依次:1-2-3 n值得变化:3-2-1 2.链表1->2->3,n=3 扫过的节点依次:1-2-3 n值得变化:2-1-0 3.链表1->2->3,n=2 扫过的节点依次:1-2-3 n值得变化:1-0--1 当走到链表结尾时:1.n>0,说明链表根本没有第n个节点,直接返回原链表: