leetcode(js)
王大锤的幸福生活
这个作者很懒,什么都没留下…
展开
-
leetcode 160.相交链表
题目编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回 null。在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。思想用两个指针在两个链表中分别遍历,有相同的则输出因为只遍历了一遍,所以时间复杂度为O(n);因为只定义了两个变量,所以空间复杂度为O(1)JS实现var...原创 2019-01-27 16:41:58 · 284 阅读 · 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 · 88 阅读 · 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 · 109 阅读 · 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 · 74 阅读 · 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 · 89 阅读 · 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 · 113 阅读 · 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 · 68 阅读 · 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 · 91 阅读 · 0 评论 -
leetcode 707.设计链表
题目设计实现链表:获取、头插法、尾插法、插入、删除get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val):在链表中的...原创 2019-01-28 22:14:34 · 361 阅读 · 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 · 153 阅读 · 0 评论