leetcode(js)
王大锤的幸福生活
这个作者很懒,什么都没留下…
展开
-
leetcode 160.相交链表
题目 编写一个程序,找到两个单链表相交的起始节点。 注意: 如果两个链表没有交点,返回 null。 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 思想 用两个指针在两个链表中分别遍历,有相同的则输出 因为只遍历了一遍,所以时间复杂度为O(n);因为只定义了两个变量,所以空间复杂度为O(1) JS实现 var...原创 2019-01-27 16:41:58 · 293 阅读 · 1 评论 -
leetcode 876. 链表的中间结点
题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 思路 快慢指针,快指针到达时,慢指针为中 JS实现 var middleNode = function(head) { let slow; let fast; if(head){ slow = head; fast = head...原创 2019-01-29 04:37:03 · 99 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素
题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 思想 值相同跳过节点 JS实现 var deleteDuplicates = function(head) { let node = head; if(head == null){ return head; } while(node.next !=null){ if...原创 2019-01-29 04:35:51 · 136 阅读 · 0 评论 -
leetcode 234. 回文链表
题目 请判断一个链表是否为回文链表。 思路 正向字符串和反向字符串比较 JS实现 var isPalindrome = function(head) { let a = ''; let b = ''; while(head){ a += head.val;//正向字符串 b = head.val + b;//反向字符串 hea...原创 2019-01-29 04:26:01 · 90 阅读 · 0 评论 -
leetcode 21. 合并两个有序链表
题目 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思想 递归实现,遍历两个链表 JS实现 var mergeTwoLists = function(l1, l2) { if(l1 == null && l2 == null){ return null; } if(l1 == null){ ...原创 2019-01-29 03:50:15 · 96 阅读 · 0 评论 -
leetcode 203. 移除链表元素
题目 删除链表中等于给定值 val 的所有节点。 思路 JS实现 var removeElements = function(head, val) { var current = head; var node = new ListNode(null); node.next = head; var newnode = node; while(current)...原创 2019-01-29 01:54:19 · 122 阅读 · 0 评论 -
leetcode 141.环形链表
题目 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 思想 用快慢指针判断 JS实现 var hasCycle = function(head) { if(head == null || head.next == null){ return ...原创 2019-01-29 00:59:46 · 77 阅读 · 0 评论 -
leetcode 206.反转链表
题目 反转一个单链表 思路 就是简单将指针位置调换 JS实现 数组 将结点依次保存在数组中,翻转数组,再放入新的链表中。 var reverseList = function(head) { var arr = []; while(head){ var node = new ListNode(head.val); arr.push(node);...原创 2019-01-28 17:53:02 · 100 阅读 · 0 评论 -
leetcode 707.设计链表
题目 设计实现链表:获取、头插法、尾插法、插入、删除 get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。 addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。 addAtIndex(index,val):在链表中的...原创 2019-01-28 22:14:34 · 382 阅读 · 0 评论 -
leetcode 4.寻找两个有序数组的中位数
题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 思路 找中位数。不能用排序,因为排序最小时间复杂度为O(nlogn),考虑二分法。 因为是有序数组,所以我们假设从下标为i处将A数组分为两半,从下标为j处将B数组分为两半,...原创 2019-03-07 22:20:37 · 178 阅读 · 0 评论