随笔分类 - 算法与数据结构
摘要:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,
阅读全文
摘要:解题思路: 删除的本质是,找到那个元素,让那个元素的前一个元素指向这个元素的后一个元素。 首先我想到的是定义一个current,表示当前元素,用来向后移动,在定义一个previous,表示当前元素的前一个元素,找到的时候改变previous和current元素的指向 var removeElemen
阅读全文
摘要:编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 刚开始想到的是暴力解法,双层循环遍历两个链表,然后对比是否有相同节点,有的话就直接返回,结果翻车了 var getIntersectionNode = function(headA, headB) { var
阅读全文
摘要:给定一个链表,判断链表中是否有环。(不使用额外空间) 示例:a-b-c-b 思路: 1.快慢指针方法 设置两个指针,快指针每次走两步,慢指针每次走一步,如果是环形的话快指针一定会追上慢指针,等到快指针和慢指针相等的时候,就返回true。否则就返回false var hasCycle = functi
阅读全文
摘要:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2输出: 1->2示例 2: 输入: 1->1->2->3->3输出: 1->2->3 思路: 链表中删除元素的方法有remove,还有就是链表的指针特性,今天就利用链表的指针特性 1.定义一个变量用于移
阅读全文
摘要:解题思路: 创建一个新的链表,然后双指针循环两个有序链表,值小的先合并,值相等都合并,然后再判断如果两个链表有没遍历完的,就直接合并到新链表,最后返回值 /** * Definition for singly-linked list. * function ListNode(val) { * thi
阅读全文