美文网首页SpringBoot极简教程 · Spring Boot Spring-Boot
LeetCode算法题:删除链表的倒数第N个元素

LeetCode算法题:删除链表的倒数第N个元素

作者: z七夜 | 来源:发表于2018-06-25 22:30 被阅读0次

需求

image.png

思路

删除倒数第N个元素,删除链表元素,要从头部开始遍历得到该元素, 2-3-4-5-6-7-8 共8个元素,删除倒数第2个元素,即7,得到2-3-4-5-6-8,删除倒数3个元素,即6,得到2-3-4-5-7-8,这个是怎么做的呢,

image.png

我们删除7,只需要把前面一个节点的后一个节点指向这个节点的后一个节点,即6的next是8,就删除了7,那我们怎么得到6的位置呢,删除的是倒数第2个数据,链表总长7,6的位置是4,即循环的时候,只需要到<size-n即可,得到6的位置

还有一种情况,如果删除的是头节点,只需要返回头结点的下一个节点即可,

实现

 public ListNode removeNthFromEnd(ListNode head, int n) {

        int size = getsize(head);
        ListNode heads = head;//保存头部
        ListNode temp = head;

        //判断下标是否越界
        if (n > size){
            System.out.println("下标越界");
            return null;
        }
        //如果要删除的是头结点
        if (size == n){
            return head.next;
        }

        //temp是头的下一个节点,少循环一次即可
        for (int i=1; i < size-n; i++){
            temp = head.next;
            head = temp;
        }
        //head为要删除节点的前一个节点
        head.next = head.next.next;

        return heads;
    }

    public int getsize(ListNode listNode){
        int size = 0;
        while (listNode != null){
            size++;
            listNode = listNode.next;
        }
        return size;
    }

测试

public static void main(String[] args){

        ListNode listNode1 = new ListNode(1);
        ListNode listNode2 = new ListNode(2);
        ListNode listNode3 = new ListNode(3);
        ListNode listNode4 = new ListNode(4);
        ListNode listNode5 = new ListNode(5);
        ListNode listNode6 = new ListNode(6);


        listNode1.next = listNode2;
        listNode2.next = listNode3;
        listNode3.next = listNode4;
        listNode4.next = listNode5;
        listNode5.next = listNode6;

        ListNode listNode = new RemoveIndexNode().removeNthFromEnd(listNode1,2);
        while (listNode != null){
            System.out.println(listNode.val);
            listNode = listNode.next;
        }

    }

效果:


image.png

QQ交流群:552113611

相关文章

网友评论

    本文标题:LeetCode算法题:删除链表的倒数第N个元素

    本文链接:https://www.haomeiwen.com/subject/ovuuyftx.html