leetcode
csdnzhiwang
这个作者很懒,什么都没留下…
展开
-
回文链表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 评论 -
leetcode:删除链表中的倒数第n个节点 js实现 三种解法
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:看到的话有两个思路 一是两次反转链表 二是计算链表的长度然后直接定位要删除的节点直接删除掉计算链表长度/** * Definition for singly-linke原创 2020-11-25 22:25:43 · 443 阅读 · 0 评论