美文网首页
算法:链表

算法:链表

作者: Zack_H | 来源:发表于2019-03-31 12:49 被阅读0次
  • 237 删除链表中的节点
    先复制其他结点内容到当前结点,再删除其他结点,实现删除当前结点。
  • 19 删除链表的倒数第N个节点
    双指针法(链表):快指针先移动n+1位,慢指针再出发,然后快指针达到NULL位置时,慢指针就处于倒数第n+1个。
public ListNode removeNthFromEnd(ListNode head, int n) {
    ListNode dummy = new ListNode(0);
    dummy.next = head;
    ListNode first = dummy;
    ListNode second = dummy;
    // Advances first pointer so that the gap between first and second is n nodes apart
    for (int i = 1; i <= n + 1; i++) {
        first = first.next;
    }
    // Move first to the end, maintaining the gap
    while (first != null) {
        first = first.next;
        second = second.next;
    }
    second.next = second.next.next;
    return dummy.next;
}
  • 206 反转链表
    迭代法:对每个结点做操作,一直迭代到尾结点。
    递归法:空链表或单结点链表跳出递归,递归当前结点的后续链表,将当前结点接在反转后的后续链表尾部,并设当前结点的next为NULL值。
public ListNode reverseList(ListNode head) {
    if (head == null || head.next == null) return head;
    ListNode p = reverseList(head.next);
    head.next.next = head;
    head.next = null;
    return p;
}
  • 234 回文链表
    双指针法(链表)II:快指针每次走两个结点,慢指针只走一个结点,最后快指针到达NULL位置时,慢指针就位于len/2的位置。
        ListNode fast = head;
        ListNode slow = head;
        // 根据快慢指针,找到链表的中点
        while(fast.next != null && fast.next.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        slow = slow.next;
  • 2 两数相加
    当存在一方结点不足时,可以把该加数当作0。
  • 328 奇偶链表
    双链表法:将奇偶结点分别连成两个链表,然后再把偶链表接到奇链表之后。
  • 141 环形链表
    双指针法(奇偶指针)解决。
  • 160 相交链表
    转化为环形链表问题解决。
    计算两链表长度,截去多余结点后再平行比较。

相关文章

  • 数据结构 - 单向链表及相关算法

    单向链表 链表常见算法 链表反转

  • 19 删除链表的倒数第 N 个结点

    题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 自行解答: 算法思路: 其实算法是链表...

  • 头条-手撕代码

    [toc] 图算法 以及最短路径算法 树算法 手写LRU 排序算法 链表算法

  • 单链表

    单链表一些相关的算法集锦,单链表的算法可以提高逻辑能力。 反转链表 最基本的链表的题目,很简单的迭代操作,需要注意...

  • 大厂面试系列(七):数据结构与算法等

    数据结构和算法 链表 链表,常见的面试题有写一个链表中删除一个节点的算法、单链表倒转、两个链表找相交的部分,这个一...

  • Java实现每日一道算法面试题(20):leecode23 合并

    1.算法题目 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 2.算法思路 算法思...

  • 总结

    Android篇 数据结构与算法顺序表 - ArrayList源码链表 - 单向链表、双向链表 - LinkedL...

  • 2018-06-07

    算法笔记 1 大O算法 1:O(运算次数):表示运算最糟糕情况下 运算时间,表示算法时间的增速 2数组链表 在链表...

  • 链表类算法题汇总

    算法题目中常考察的链表操作无非以下几种: 链表反转 链表合并 寻找链表中点 寻找链表倒数第 K 个节点 删除链表节...

  • 如何设计一个内存缓存库

    双向链表 + LRU淘汰算法 + 线程安全 双向链表的设计 用OC来设计双向链表(不是循环链表) 单个节点 整个链...

网友评论

      本文标题:算法:链表

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