美文网首页
删除链表的中间节点和a/b节点

删除链表的中间节点和a/b节点

作者: Tank_Mao | 来源:发表于2021-02-02 21:16 被阅读0次

给定链表的头结点head,实现删除链表的中间节点的函数。
例如:
不删除任何节点;
1->2,删除节点1;
1->2->3,删除节点2;
1->2->3->4,删除节点2;
1->2->3->4->5,删除节点3;

public Node removeMidNode(Node head){
        if(head == null || head.next == null){
            return head;
        }
        if(head.next.next == null){
            return head.next;
        }
        Node pre = head;
        Node cur = head.next.next;
        while(cur != null && cur.next.next != null){
            pre = pre.next;
            cur = cur.next.next;
        }
        pre.next = pre.next.next;
        return head;
    }

进阶问题:
给定链表的头结点head、整数a和b,实现删除位于a/b处节点的函数。
例如:
链表: 1->2->3->4->5,假设a/b的值为r。
如果r等于0,不删除任何节点;
如果r在区间(0,1/5]上,删除节点1;
如果r在区间(1/5,2/5]上,删除节点2;
如果r在区间(2/5,3/5]上,删除节点3;
如果r在区间(3/5,4/5]上,删除节点4;
如果r在区间(4/5,1]上,删除节点5;
如果r大于1,不删除任何节点。

package pers.mao.linkedList.demo_03;

/**
 * @author Mao Qingbo
 * @date 2021-02-02
 */
public class RemoveByRatio {
    public Node removeByRatio(Node head, int a, int b){
        int n = 0;
        Node cur = head;
        while(cur != null){
            n++;
            cur = cur.next;
        }
        n = (int) Math.ceil((double) (a * n) / (double) b);
        if(n == 1){
            return head.next;
        }
        if(n > 1){
            cur = head;
            while(--n != 1){
                cur = cur.next;
            }
            cur.next = cur.next.next;
        }
        return head;
    }
}

相关文章

  • 删除链表的中间节点和a/b节点

    给定链表的头结点head,实现删除链表的中间节点的函数。例如:不删除任何节点;1->2,删除节点1;1->2->3...

  • 链表-链表删除

    链表删除注意点 链表作为函数出口返回 删除首节点 删除中间节点注意保护 代码实现

  • BoP——3.4单向链表删除中间节点

    题目 给定单向链表中的某个节点的指针指针(中间节点),要求删除该节点 方法一 假设A->B->C,我们持有B的指针...

  • 链表-链表节点的删除

    场景 1 链表无序,有重复节点,删除链表中值为data的节点。思路:链表的删除分为“头删”和“中间尾删” 头删:头...

  • 面试题18. 删除链表的节点

    删除链表的节点 题目描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的...

  • 数据结构与算法之链表面试题(四)

    目录 删除链表中的节点反转一个链表递归实现迭代(非递归)实现 一 删除链表中的节点 237. 删除链表中的节点 说...

  • LeetCode 每日一题 [51] 除链表的节点

    LeetCode 删除链表的节点 [] 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回...

  • LeetCode题解之删除中间节点

    删除中间节点 题目描述 实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节...

  • 剑指 Offer 18. 删除链表的节点

    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 思路: 单链表遍...

  • 18-删除链表节点、删除链表重复节点

    1. 删除链表节点 2. 删除链表中的重复节点 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没...

网友评论

      本文标题:删除链表的中间节点和a/b节点

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