-
leecode 精选 08-merge k sorted lists 合并多个有序的链表
开胃菜
在进入本节的正题之前,我们先来看一道开胃菜。
题目 21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解法 1
思路
直接两个列表合并,排序,然后重新...
2020-06-08 07:13:08 |
Algorithm
-
leecode 详解 07-generate-parentheses 括号生成
括号生成
题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。
示例:
输入:n = 3
输出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路分析
你看这道题,他的样子平淡无奇。
但是既然我...
2020-06-08 07:13:08 |
Algorithm
-
leecode 详解 06-ksum 求符合条件的 k 个数
两数之和
题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, ...
2020-06-08 07:13:08 |
Algorithm
-
leecode 详解 05-median of two sorted arrays 寻找两个正序数组的中位数
题目
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 =...
2020-06-08 07:13:08 |
Algorithm
-
leecode 详解 04-regex match 正则表达式匹配
题目
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ’*‘ 的正则表达式匹配。
’.’ 匹配任意单个字符
‘*’ 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。
说明:
s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。
个人分析
拿到题目的第...
2020-06-08 07:13:08 |
Algorithm
-
leecode 详解 03-Manacher Algorithm 马拉车算法
Manacher’s Algorithm 马拉车算法。
马拉车算法 Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性。
解决奇偶的问题
首先我们解决下奇数和偶数的问题,在每个字符间插入”#”,并且为了使得扩展的过程中,到边界后自动结束,在两端分别插入 ...
2020-06-08 07:13:08 |
Algorithm
-
从零开始的数据结构与算法-02-基本概念
数据结构
算法
二者的关系
拓展阅读
对于复杂度的衡量
参考资料
数据结构
算法
二者的关系
拓展阅读
参考资料
2020-06-08 07:13:08 |
Algorithm
-
从零开始的数据结构与算法-00-概览
实现
C 更加接近于底层,建议数据结构使用 C 的形式。
同时写一份 java 实现。
算法使用 java 实现。
数据结构与算法二者分开,整理为工具包。
学习方式
兼听则明,偏听则暗。
学习的时候以一本书为主,多本书为辅助。
协助查询一点资料。
实战
可以刷一遍 leetcode 算法题。
省的每次都被无聊的算法面试恶心到。
也提升自己的基本功,便于工具框架的编写。...
2020-06-08 07:13:08 |
Algorithm