美文网首页
刷题6 剑指 Offer — 链表

刷题6 剑指 Offer — 链表

作者: 可爱多小姐 | 来源:发表于2020-08-12 22:48 被阅读0次

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

https://leetcode-cn.com/leetbook/read/illustrate-lcof/xz4mp2/
时间复杂度:O(n),空间复杂度:O(1)

var deleteNode = function(head, val) {
    if(head == null){
        return null;
    }
    if(head.val == val){
        return head.next;
    }
    var left = head;
    var cur = left.next
    while(cur.val != val && cur.next!= null){
        left=cur;
        cur=cur.next;
    }
    if(cur != null){
        left.next=cur.next
    }
    return head
};

剑指 Offer 22. 链表中倒数第 k 个节点

https://leetcode-cn.com/leetbook/read/illustrate-lcof/xzy5ei/
时间复杂度:O(n),空间复杂度:O(1)

var getKthFromEnd = function(head, k) {
    var cur = head;
    var post= head;
    for(var i=0; i<k; i++){
        cur = cur.next;
    }
    while(cur!=null){
        cur = cur.next;
        post = post.next
    }
    return post
};

剑指 Offer 24. 反转链表

https://leetcode-cn.com/leetbook/read/illustrate-lcof/xzccxg/
时间复杂度:O(n),空间复杂度:O(1)

var reverseList = function(head) {
    var cur = null;
    var pre = head;
    while(pre!=null){
       var tmp = pre.next;
        pre.next = cur;
        cur = pre;
        pre = tmp;
    }
    return cur
};

剑指 Offer 25. 合并两个排序的链表

https://leetcode-cn.com/leetbook/read/illustrate-lcof/xzjkjj/
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。O(m+n)

var mergeTwoLists = function(l1, l2) {
    if(l2==null){
        return l1
  }
    if(l1==null){
        return l2
  }
    if(l1.val>l2.val){
        l2.next = mergeTwoLists(l1,l2.next);
        return l2
    }else{
        l1.next = mergeTwoLists(l2,l1.next);
        return l1
    }
};

剑指 Offer 52. 两个链表的第一个公共节点

https://leetcode-cn.com/leetbook/read/illustrate-lcof/xshucr/
使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,
当 node1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点;
当 node2 到达链表 headB 的末尾时,重新定位到链表 headA 的头结点。
这样,当它们相遇时,所指向的结点就是第一个公共结点。

  • 时间复杂度:O(M+N)。
  • 空间复杂度:O(1)O(1)。
//(双指针法)
var getIntersectionNode = function(headA, headB) {
    let curA = headA;
    let curB = headB;
    while (curA != curB) {
        curA = curA != null ? curA.next : headB;
        curB = curB != null ? curB.next : headA;
    }
    return curA;
};

相关文章

  • 刷题6 剑指 Offer — 链表

    剑指 Offer 18. 删除链表的节点 https://leetcode-cn.com/leetbook/rea...

  • 反转链表

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:链表 题目描述: 输入一个链表,反转链表后,输出新链...

  • 删除链表中重复的节点

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:链表 题目描述: 在一个排序的链表中,存在重复的结点...

  • 合并两个排序的链表

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:链表 题目描述: 输入两个单调递增的链表,输出两个链...

  • 两个链表的第一个公共节点

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:栈 链表 题目描述: 输入两个链表,找出它们的第一个...

  • 链表中倒数第k个结点

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:栈 题目描述: 输入一个链表,输出该链表中倒数第k个...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 一点感想

    刷剑指offer之前刷过一百来道leetcode,不过都是刷的简单的题。剑指offer现在也刷了快一半了,觉得二叉...

  • (6)链表相关题目

    (1)从尾到头打印链表 算法思路:(1)递归(2)借助栈(剑指offer6题) (2)O(1)时间内删...

  • 剑指offer刷题......

    学习 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排...

网友评论

      本文标题:刷题6 剑指 Offer — 链表

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