题解 | #删除链表的倒数第n个节点#

删除链表的倒数第n个节点

https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode removeNthFromEnd (ListNode head, int n) {
        // write code here
        ListNode findLength=head;
        int length=0;
        int i=1;
        //链表长度
        while(findLength!=null){
            length++;
            findLength=findLength.next;
        }
        
        //将删除倒数的第N个节点转换成删除第N个节点
        int deleteIndex=length-n+1;
        //如果删除头节点,直接返回头节点后面的节点
        if(deleteIndex==1){
            return head.next;
        }
        //找到要删除第N个节点后面的链表
        ListNode deleteNode=head;
        while(i<deleteIndex){
            deleteNode=deleteNode.next;
            i++;
        }
        deleteNode=deleteNode.next;
        //进行将要删除节点的前后两部分进行连接
        ListNode tmp=head;
        ListNode returnNode=tmp;
        i=2;
        while(i<deleteIndex){
            i++;
            tmp=tmp.next;
        }
        tmp.next=deleteNode;

        return returnNode;
    }
}

全部评论

相关推荐

网安已死趁早转行:山东这地方有点说法
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务