![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
歪夕
这个作者很懒,什么都没留下…
展开
-
Leetcode 面试题 17.26. 稀疏相似度
题目链接:https://leetcode-cn.com/problems/sparse-similarity-lcci/ 求文章相似度,亦即经典的倒排索引。 会超时的暴力做法: 枚举两篇文章,搜索它们相似的数值,然后计算相似度。 如果用set,map等维护,时间O(N^2*L*logN)。 用unorderedmap,时间O(N^2*L)。 倒排索引: 建立map<int,vector<int>> map,对数字,记录所有包含这个数字的文档序列。 用迭代器遍历map,计算出文档对的原创 2021-03-21 17:46:52 · 149 阅读 · 0 评论 -
Leetcode 44. 通配符匹配
题目链接:https://leetcode-cn.com/problems/wildcard-matching/ 写了个暴力n^2。 递归写T了,于是换成了迭代… 主要学会了怎么初始化一个vector吧… 边界处理也太恶心了,我干脆全部+1。。。 class Solution { public: bool isMatch(string s, string p) { int n=s.size(),m=p.size(); vector<vector<bool&原创 2021-03-20 00:00:35 · 41 阅读 · 0 评论 -
Leetcode 41. 缺失的第一个正数
题目链接:https://leetcode-cn.com/problems/first-missing-positive/ 还以为真的有常数空间,线性时间的做法。 原来不过是充分利用原来的空间。 也就是一个int通过类似正负等方法复用这个空间。 挺无语的。。。 做法是: 输入<=0以及>len的值都是无效值,将这种无效值都初始化为0。 接下来若A[i]>0,表示一个输入的有效数字。若A[i]=-1,表示i+1这个数字出现过。 最后扫一遍,将A数组变为只有0(无效,未出现)或-1(出现过)。原创 2021-03-19 23:02:14 · 48 阅读 · 0 评论 -
Leetcode 23. 合并K个升序链表
题目链接:https://leetcode-cn.com/problems/merge-k-sorted-lists/ 主要用来联系一下指针、类的代码写法。 因为系统给了函数结构,所以,不能自己重构新的链表,因为在离开函数作用域之后局部变量占用的内存空间会被释放掉。所以只能在原链表上修改next的值,从而重构链表。 主要是用了优先队列(最小堆)维护的。 代码: ```cpp /** * Definition for singly-linked list. * struct ListNode { *原创 2021-03-19 15:21:49 · 74 阅读 · 0 评论 -
Leetcode 4. 寻找两个正序数组的中位数
题目链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗? 可以推广为:给定两个有序数组,在log时间复杂度内找出第k大的数。 数组A=[A0,A1,…,AM-1],B=[B0,B1,…,BN-1]。 假设找到了前k大的数集合C,则C=[A0,A1,…,Ai,B0,B1,…Bj](即必为A,B前缀的并)。 且具有以下性质:Ai<=Bj+1,Bj<原创 2021-03-19 11:37:17 · 51 阅读 · 0 评论