js算法
文章平均质量分 63
csdnzhiwang
这个作者很懒,什么都没留下…
展开
-
酷家乐前端开发工程师一面
写在前面周五面试酷家乐 面试官上来直接五道算法题把我给整懵了 记录一下吧 算法题还是要多刷多刷!解法一 排序 不赘述了解法二 利用map集合var majorrityElement=function(nums){ let map=new Map(); for(let i=0;i<nums.length;i++){ if(!map.has(nums[i])) map.set(nums[i],1); else map.set(nums[i],map.get(nums[i原创 2021-03-28 18:18:18 · 555 阅读 · 0 评论 -
回文链表js实现
编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题思考过程:核心问题就是空间复杂度O(1)了 不然的话搞个数组或者栈存着比较肯定没问题。看到这道题就很想用快慢指针。。但是不知道怎么用因为如果第二个指针在中间那时间复杂度就太高了。如果在最后面就有不能反着遍历的问题。看了参考的解答先快慢指针 然后在把后半段反原创 2020-12-01 15:42:09 · 201 阅读 · 0 评论 -
剑指offer 06.从尾到头打印链表js实现
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000思考过程:这个题目是是从尾到头打印,如果是从头到尾打印就是没难度了。所以看到就可以想到一个用栈,然后一个反转链表,leetcode上还提供了一个递归解法,包括放入数组里面然后reverse()方法。还是都写一下吧。js里面的栈用的还是很少的。看栈的时候发现博客上写的堆栈都是基于数组然后用pop push uns原创 2020-12-01 14:53:36 · 315 阅读 · 0 评论 -
剑指offer21:反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000思考过程:经典经典题,定义两个指针: pre 和 cur ;pre 在前 cur在后。每次让 pre的 next 指向 cur ,实现一次局部反转局部反转完成之后, pre 和 cur 同时往前移动一个位置循原创 2020-11-28 21:11:08 · 86 阅读 · 0 评论 -
leetcode21:合并两个有序链表 js实现
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思考过程:这是数据结构的经典题,两两比较数值大小,值得注意的一点是不要开辟新的链表空间。以及哨兵节点的处理/** * Definition for singly-linked list. * function ListNode(val, next)原创 2020-11-28 15:15:07 · 167 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点 js实现
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后原创 2020-11-25 21:10:38 · 191 阅读 · 0 评论