随笔分类 -  算法与数据结构

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