随笔分类 -  LeetCode

经典LeetCode题解 刷题总结、个人心得
摘要:1. 原题链接:https://leetcode.com/problems/increasing decreasing string/ 2. 解题思路 1. 直观的想法是:用有序map\记录字母和字母出现的次数 2. 按照题目描述的方式,先顺序遍历map,再反序遍历map,直到map中的所有字母出现 阅读全文
posted @ 2020-03-08 20:00 wengle 阅读(410) 评论(0) 推荐(0) 编辑
摘要:刷完了LeetCode链表相关的经典题目,总结一下用到的技巧: 1. 技巧 1. 哑节点 哑节点可以将很多特殊case(比如:NULL或者单节点问题)转化为一般case进行统一处理,这样代码实现更加简洁,优雅 2. 两个指针 链表相关的题目一般都需要用到两个指针:prev指针和cur指针 3. 头插 阅读全文
posted @ 2020-02-25 22:08 wengle 阅读(210) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/lru cache/ 2. 解题思路 1. 为了增删改查都有较高的性能,使用双向链表和哈希表的组合 2. 针对LRU,哈希表对于查询和修改可以实现O(1)的时间复杂度,但是无法在O(1)时间复杂度实现删除操作 3. 双向链表 阅读全文
posted @ 2020-02-20 16:39 wengle 阅读(213) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/reorder list/ 2. 解题思路 1. 找到中间节点,从中间节点位置断开,得到两个链表 2. 对链表的后半截部分进行翻转 3. 将前半截和翻转后的后半截链表进行合并 3. 算法 1. 通过slow、fast指针找到 阅读全文
posted @ 2020-02-19 15:35 wengle 阅读(152) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/copy list with random pointer/ 2. 解题思路 2.1 映射表 1. 建立新旧节点之间的映射表:old new,来解决复制random指针 2.2 克隆链表 1. 创建一个包含新节点的克隆链表: 阅读全文
posted @ 2020-02-19 12:11 wengle 阅读(204) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/swap nodes in pairs/ 2. 解题思路 1. 利用哑节点将边界case转化为一般case,比如head为NULL或者链表只有一个节点的情况都可以被转化 2. 正常情况下,依次创建三个指针:prev,p,q, 阅读全文
posted @ 2020-02-18 21:20 wengle 阅读(185) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/remove nth node from end of list/ 2. 解题思路 1. 利用哑节点将边界case转化为一般case 2. 倒数第n个,也就是顺数第(链表总长度 n+1)个 3. 由于需要删除顺数第(总长度 阅读全文
posted @ 2020-02-16 14:34 wengle 阅读(145) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/rotate list/ 2. 解题思路 1. 对于链表涉及到反转、倒置等操作,一般都需要两个指针:prev、cur 2. 根据翻转的规则,当翻转次数刚好是链表长度list_len的整数倍时,实际上翻转后的链表和未翻转的原链 阅读全文
posted @ 2020-02-15 19:08 wengle 阅读(134) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/remove duplicates from sorted list/ 2. 解题思路 1. 删除链表节点会涉及到两个指针:prev指针和cur指针 3. 算法 1. prev指针和cur指针分别指向前两个节点 2. 从cu 阅读全文
posted @ 2020-02-15 14:04 wengle 阅读(143) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/partition list/ 2. 解题思路 1. 从头到尾的遍历天然维护着节点之间的相对位置 2. 采用两个链表分别记录小于x和大于等于x的节点 3. 算法 1. left_dummy和right_dummy分别代表两个 阅读全文
posted @ 2020-02-15 13:37 wengle 阅读(135) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/reverse linked list ii/ 2. 解题思路 1. 采用头插法进行反转 2. 利用哑节点将边界case转化为一般case 3. 算法 1. head2指针用于进行头插操作的头部指针 2. 首先,将head2 阅读全文
posted @ 2020-02-14 20:56 wengle 阅读(110) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/reverse linked list/ 2. 解题思路 1. 注意:一般情况下,反转操作需要有两个指针 2. 递归思路 1. 递归类似于栈操作的入栈和出栈,关键在于入栈哪些数据? 2. 针对这道题目,由于是反转操作,所以需 阅读全文
posted @ 2020-02-14 20:25 wengle 阅读(164) 评论(0) 推荐(0) 编辑
摘要:1. 原题链接:https://leetcode.com/problems/add two numbers/ 2. 解题思路 1. 两个链表相加的解题思路比较直接 2. 需要注意两个链表的长度不同,有些边界情况需要考虑周到 3. 考虑进位的情况 3. 算法 3.1 直观算法 1. 首先,遍历两个链表 阅读全文
posted @ 2020-02-10 22:40 wengle 阅读(92) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示