链表
良良2号
小时候真傻,居然盼着长大。
展开
-
寻找两个链表的公共节点
寻找两个链表的公共节点思路双指针:最简单的方法可以两层循环,复杂度为O(mn);同样是双指针,可以将复杂度降为O(m+n);让两个指针走完自己的链表后,再走对方的。代码/*function ListNode(x){ this.val = x; this.next = null;}*/function FindFirstCommonNode(pHead1, pHead2){ let p = pHead1; let q = pHead2; whi原创 2021-09-03 17:38:22 · 244 阅读 · 0 评论 -
两个链表相加
两个链表相加思路用两个栈分别存储两个链表,用 头插法 构建结果链表。代码/* * function ListNode(x){ * this.val = x; * this.next = null; * } *//** * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */function addInList( head1 , head2 ) { // w原创 2021-09-09 15:26:07 · 76 阅读 · 0 评论 -
合并有序链表
合并有序链表递归思路代码/*function ListNode(x){ this.val = x; this.next = null;}*/// 返回合并后的头节点function Merge(pHead1, pHead2){ if(pHead1==null) return pHead2; if(pHead2==null) return pHead1; if(pHead1.val<pHead2.val){ pHead1.next原创 2021-08-10 16:10:42 · 73 阅读 · 0 评论 -
判断回文链表
逆序打印链表var reverse = function(head){ if(head==null) return; reverse(head.next); // 后序遍历 console.log(head.val);}判断回文链表思路快慢指针反转中点之后的链表,然后双指针从两端往中间逼近。代码/** * Definition for singly-linked list. * function ListNode(val, next) { * th原创 2021-05-26 22:28:51 · 70 阅读 · 0 评论 -
k个一组反转链表
k个一组反转链表递归思路问题:反转以head为头的链表的前k个节点;子问题:反转以'3'为头的链表的前k个节点。递归函数:输入head和k,返回以head为头的前k个节点,并返回新的头节点。问题与子问题的连接:'1'这个节点.next = reverseKGroup('3'这个节点, k)通过遍历找到'3'这个节点。base case:遍历时如果不足k个,则直接返回head。代码/** * Definition for singly-linked list. * functi原创 2021-05-24 23:22:53 · 83 阅读 · 0 评论 -
反转固定区间的链表
反转一部分链表递归思路递归函数:输入一个节点head和一个区间[left, right],将「以left为起点,right为终点」的链表反转,并返回反转之后的头结点。if left!=1, 则head=head.next, 新的left减1, 新的right减1。if left==1, 则从头开始反转。从头开始反转, 也是一个递归函数,。代码/** * Definition for singly-linked list. * function ListNode(val, next)原创 2021-05-24 19:42:39 · 245 阅读 · 0 评论 -
反转链表前n个节点
递归思路注意后继者代码/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head * @param {number} left *原创 2021-05-24 16:38:36 · 843 阅读 · 1 评论 -
反转整个链表
反转整个链表思路递归函数:输入一个节点head,将「以head为起点」的链表反转,并返回反转之后的头结点。反转之后有接下来两步重要的操作:代码/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next)原创 2021-05-08 21:07:44 · 80 阅读 · 0 评论