201. 数字范围按位与题干给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。 示例 1: 输入:left = 5, right = 7 输出:4 示例 2: 输入:left = 0, right = 0 输出:0 示例 3: 输入:left = 1, right = 2147483647 输出:0 提示: 0 <= left <= right <= 231 -...

并查集以下是并查集模板,核心数据结构是一个哈希表,(k,v)表示键以及该键的根结点,新key插入节点调用add函数在哈希表中插入(key,-1),寻找根节点是find函数,merge函数将两个树的根节点合并 class UnionFind{ public: // 记录父节点 unordered_map<int,int> father; void add(int x){ if(!father.count(x)){ father[x] = -1; } } int find(int...

102. 二叉树的层序遍历题干给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 输入:root = [] 输出:[] 提示: 树中节点数目在范围 [0, 2000] 内 -1000 <= Node.val <= 1000 思路经典bfs,队列每次处理一层,将下一层节点入队 代码/** * Definition...

2. 两数相加题干给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 =...

[论文阅读分享] Smart Learning to Find Dumb Contracts[论文阅读分享] Smart Learning to Find Dumb Contracts 摘要:作者推出了深度学习漏洞分析器(DLVA),这是一种以太坊智能合约的漏洞检测工具,其具有三个关键组成部分。首先,智能合约到向量(SC2V)使用神经网络将任意智能合约字节码映射到高维浮点向量。其次,当目标合约的向量与训练集中标记合约的向量具有欧几里得相似性时,Sibling Detector(SD)对合约进行分类。第三,Core Classifier(CC)使用神经网络来推断易受攻击的合约。实验结果显示,...

一.Dijkstra 算法 (单源最短路径)例题:743. 网络延迟时间 以起点 u 为中心,逐步向外扩展并更新其他顶点的「最短路径」。 「Dijkstra 算法」运用了「贪心思想」,它运行的每一步都是选择当前已知的顶点的「最小权重」去寻找其他顶点的「最短路径」。 用vector vector<pair> 存邻接表,用priority_queue维护下一个最小能更新相邻节点的值, class Solution { public: int...

【论文阅读分享】Spooky: Granulating LSM-Tree Compactions Correctly一.研究背景现代kv存储引擎许多都依赖于LSM-tree(日志结构合并树) 作为其核心数据结构。 LSM-tree的一个关键设计维度是其合并粒度。一些设计采用全量合并(Full Merge)的方式,即一次性压缩整个Level的所有数据。其他设计采用部分合并(Partial Merge)的方式,即独立地压缩具有重叠key范围的较小file group。 本文发现这两种传统的策略都存在严重缺陷。Full...

博客迁移记录一.前言大二的时候,同样是王老师的设计思维课上,有一个类似的作业是组队用hugo做一个GitHub静态网页,那时候除了组队的作业也单独建了一个自己的blog,也是hugo做的用的pacman模板。大三大四时会把一些作业心得和刷LeetCode的过程记录上去,偶尔也把看过的论文解读放在博客上。 为什么不直接把原来的博客链接放上?因为当时用的hugo...

RAMBO源码解读一.从main函数的测试分支开始没有下完整数据包,这里用test分支的toy test文件,用data/ArtfcKmersToy100.txt作为测试数据,主要部分在以下几个函数 RAMBO myRambo(n_perSet, R_all, B_all, K); 创建Rambo结构 myRambo.createMetaRambo (K, false); 初始化meta数据 myRambo.insertion2 (alllines); 插入数据 myRambo.query(testKeys[i], testKeys[i].size());...

1.多版本管理leveldb进行一次从level n到level n+1层的compaction操作后会在level n+1层生成新的文件,随后再删除旧文件,leveldb使用version来管理每个层级拥有的文件信息,每次compaction操作后会生成一个新的版本,生成新版本的过程中用versionedit来临时保存信息(中间状态),最后当前版本和versionedit合并后生成新版本 versionedit,其代码在db/version_edit.h,其保存compaction操作后增加的删除文件信息和其他元数据 class VersionEdit...