- 博客(90)
- 收藏
- 关注
原创 2023安全与软工顶会/刊中区块链智能合约相关论文
主要整理了2023年四大安全顶会、四大软工顶会和两个软工顶刊中,有关区块链智能合约的相关论文。搜集包含有:软工顶会:ISSTA、FSE、ASE、ICSE软工顶刊:TOSEM、TSE安全顶会:S&P、USENIX Security、CCS、NDSS
2023-08-10 01:10:58 4911 4
原创 论文详读 - CCS 2019 TokenScope
论文详读 - CCS 2019 TokenScope: Automatically Detecting Inconsistent Behaviors of Cryptocurrency Tokens in Ethereum
2022-11-23 19:27:54 854 1
原创 2022安全与软工顶会中区块链智能合约相关论文
主要整理了2022年四大安全顶会和六个软工顶会中,有关区块链智能合约的相关论文。安全顶会:S&P、USENIX Security、CCS、NDSS软工顶会:TOSEM、TSE、ISSTA、FSE、ASE、ICSE
2022-11-13 14:43:05 4842
原创 云计算 - 3 - 使用MapReduce处理数据
1.使用 MapReduce 实现对多个文本文件单词总数的统计(WordCount)。2.使用 MapReduce 实现社交网站好友的推荐。
2022-11-12 22:06:57 1840
原创 云计算 - 2 - HDFS文件系统的基本操作
1、HDFS 文件系统命令行操作,包括加入、修改、更新和删除 HDFS 文件系统中的文件。2、利用 Java 开发 HDFS 文件系统应用程序,使用 HDFS Java API 接口读写 HDFS 文件系统中的文件。
2022-11-10 14:40:43 870
原创 云计算 - 1 - 三虚拟机Hadoop的安装和配置
配置Hadoop云计算平台,包括NameNode和DataNode的设置。测试Hadoop平台的运行情况。
2022-11-10 14:21:17 2107
原创 AcWing 算法基础课笔记 5.动态规划(持续更新)
AcWing 算法基础课笔记 3.搜索与图论背包问题主要思想01背包完全背包多重背包分组背包线性DP区间DP背包问题主要思想DP主要从两个角度进行考虑:状态表示 f ( i , j ):用几维来表示状态,每一个状态的含义是什么。集合:是所有选法的集合,选择过程有两个条件:只能从前 i 个物品中选当前总体积 <= j属性:最大值max,最小值min,元素数量状态计算:如何一步步把每一个状态算出来一般来说,对应的是集合的划分。例如 在算到某一个物品 i 时,将集合划分为
2022-10-03 22:03:59 1060 1
原创 LeetCode 每日一题 279.完全平方数
LeetCode 每日一题 279.完全平方数问题描述简要思路代码问题描述简要思路可dp评论区学习了更好用的 四平方和定理。四平方和定理:每个正整数均可表示成不超过四个整数的平方之和推论:数 n 如果只能表示成四个整数的平方和,不能表示成更少的数的平方之和,必定满足 4a ( 8 b + 7 )如果 n % 4 == 0,k = n / 4,n 和 k 可由相同个数的整数表示利用推论 1 解该题:判断这个数是否满足 4a ( 8 b + 7 ),若满足,那么这个数就至少需要
2021-06-11 16:08:31 220 1
原创 LeetCode 每日一题 494.目标和
LeetCode 每日一题 494.目标和问题描述简要思路代码问题描述简要思路刚开始用暴力,显然超时了。然后 使用 dfs 优化。代码解法1(暴力):class Solution {public: int mi(int x){ int res = 2; for(int i = 1; i < x; i++){ res *= 2; } return res; } int f
2021-06-07 01:26:25 274
原创 LeetCode 每日一题 525.连续数组
LeetCode 每日一题 525.连续数组问题描述简要思路代码问题描述简要思路和昨天的题一样,前缀和 + 哈希表。代码public: int findMaxLength(vector<int>& nums) { int n = nums.size(); int res = 0; unordered_map<int, int> m; int sum = 0; m[sum] =
2021-06-03 00:58:02 288
原创 AcWing 算法基础课笔记 3.搜索与图论(持续更新)
AcWing 算法基础课笔记 3.搜索与图论深度优先遍历DFS与宽度优先遍历BFS二者对比DFS深度优先遍历DFS与宽度优先遍历BFS二者对比都可以对整个搜索空间进行遍历。搜索的时候都是像一棵树一样搜索。但是搜索的顺序不一样:DFS 优先深度,到不能再前进的时候(叶子节点)再回溯。BFS 一层层搜索,搜索完每一代节点后,再搜索下一代节点。DFSBFS数据结构stackqueue空间O(h)O(2h)DFS 在空间使用上有优势,但不具有最短路性。B
2021-06-02 03:39:12 1180
原创 LeetCode 每日一题 1744.你能在你最喜欢的那天吃到你最喜欢的糖果吗?
LeetCode 每日一题 1744.你能在你最喜欢的那天吃到你最喜欢的糖果吗?问题描述简要思路代码问题描述简要思路前缀和,主要是在于判断条件的边界值处理,注意以下两点:从第 0 天开始开始吃糖,所以 favDay 要 + 1会爆 int,要用 long代码class Solution {public: vector<bool> canEat(vector<int>& candiesCount, vector<vector<int&
2021-06-01 01:37:08 224
原创 LeetCode 1482.制作 m 束花所需的最少天数
LeetCode 1482.制作 m 束花所需的最少天数问题描述简要思路代码问题描述简要思路二分查找最小的天数。代码class Solution {public: int minDays(vector<int>& bloomDay, int m, int k) { int n = bloomDay.size(); if(m * k > n) return -1; int l = 0, r = 0;
2021-05-31 13:53:27 188
原创 LeetCode 1310.子数组异或查询
LeetCode 1310.子数组异或查询问题描述简要思路代码问题描述简要思路简单前缀和。代码class Solution {public: vector<int> xorQueries(vector<int>& arr, vector<vector<int>>& queries) { int n = arr.size(); vector<int> s(n+1);
2021-05-31 02:54:41 633
原创 LeetCode 每日一题 231.2的幂
LeetCode 每日一题 231.2的幂问题描述简要思路代码问题描述简要思路题目很简单,暴力直接过,重点在于 lc 评论中的两种简要解法,这里做个记录。解法1:暴力,不赘述。解法2:return (n > 0) && (n & -n) == n;解释:在二进制下,2 的幂次方只会有 1 位是 1,其余全是 0。可以自己用4、8、32…的二进制看看。负数的在计算机中二进制表示为补码,即原码取反 +1。将这两者进行 & 操作,得到的肯定是原码中最后一个二进
2021-05-30 00:25:35 245
原创 LeetCode 每日一题 1074.元素和为目标值的子矩阵数量
LeetCode 每日一题 1074.元素和为目标值的子矩阵数量问题描述简要思路代码问题描述简要思路暴力前缀和,没想到竟然能过。。代码class Solution {public: int s[110][110]; int numSubmatrixSumTarget(vector<vector<int>>& matrix, int target) { int n = matrix.size(); int m =
2021-05-29 01:55:00 166
原创 LeetCode 每日一题 477.汉明距离总和
LeetCode 每日一题 477.汉明距离总和问题描述简要思路代码问题描述简要思路暴力解很简单,但是会超时,这题主要就在于时间复杂度的优化。一一计算每一位的 0、1 数对,每个 0、1 会使汉明距离加 1 。代码class Solution {public: int totalHammingDistance(vector<int>& nums) { int n = nums.size(); int res = 0;
2021-05-28 00:34:06 226
原创 LeetCode 每日一题 461.汉明距离
LeetCode 每日一题 461.汉明距离问题描述简要思路代码问题描述简要思路简单题,使用位运算x >> i & 1一一对比每一位是否相同并计数即可。代码class Solution {public: int hammingDistance(int x, int y) { int cnt = 0; for(int i = 30; i >= 0; i--){ if((x >> i &
2021-05-27 00:12:23 195
原创 LeetCode 每日一题 1190.反转每对括号间的子串
LeetCode 每日一题 1190.反转每对括号间的子串问题描述简要思路代码问题描述简要思路使用栈存 ‘(’ ,每次遇到 ‘)’ 时,pop 一个’(’,并将两个括号之间的串反转。代码class Solution {public: string reverseParentheses(string s) { int n = s.size(); stack<int> t; for(int i = 0; i &
2021-05-26 01:32:50 502
原创 LeetCode 每日一题 1035.不相交的线
LeetCode 每日一题 1035.不相交的线问题描述简要思路代码问题描述简要思路DP代码class Solution {public: int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) { int dp[501][501]{0}; int n = nums1.size(); int m = nums2.size();
2021-05-21 00:46:08 165
原创 LeetCode 每日一题 692.前K个高频单词
LeetCode 每日一题 692.前K个高频单词问题描述简要思路代码问题描述简要思路map统计,在使用sort排序输出前k个。代码class Solution {public: static bool cmp(pair<string, int> &p1, pair<string, int> &p2){ return p1.second > p2.second || (p1.second == p2.second &
2021-05-20 00:24:43 118
原创 AcWing 算法基础课笔记 2.数据结构
AcWing 算法基础课笔记 2.数据结构链表与邻接表:树与图的存储链表数组模拟单链表模拟方法单链表模板数组模拟双链表模拟方法双链表模板栈与队列:单调队列、单调栈kmpTire并查集链表与邻接表:树与图的存储链表使用结构体加指针的方式实现链表非常慢,所以笔试题一般不用,这里使用数组模拟链表的方式。主要讲以下两点:数组模拟单链表模拟方法单链表在算法题、笔试里用的最多的是邻接表邻接表最常见的应用就是:存储图和树模拟方式如下:使用 e[ ] 存储值 .val,ne[ ] 存储指针指向下一
2021-05-19 18:52:13 1195
原创 LeetCode 每日一题 1738.找出第 K 大的异或坐标值
LeetCode 每日一题 1738.找出第 K 大的异或坐标值问题描述简要思路代码问题描述简要思路经典前缀和。先用 s[ ] 存储前缀异或和再用 s1[ ] 进行排序。代码class Solution {public: int kthLargestValue(vector<vector<int>>& matrix, int k) { int n = matrix.size(), m = matrix[0].size();
2021-05-19 01:22:22 135
原创 LeetCode 剑指Offer 04.二维数组中的查找
LeetCode 剑指Offer 04.二维数组中的查找问题描述简要思路代码问题描述简要思路根据矩阵特性,从右上角开始查找,时间复杂度O(m+n)代码class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size() == 0) return false; int n =
2021-05-19 00:21:40 65
原创 LeetCode 剑指Offer 15.二进制中1的个数
LeetCode 剑指Offer 15.二进制中1的个数问题描述简要思路代码问题描述简要思路使用 lowbit(n) = n & -n 取第一个 1 的思想。代码class Solution {public: int hammingWeight(uint32_t n) { int num = 0; while(n){ n -= n & -n; num++; }
2021-05-18 18:50:44 104
原创 LeetCode 每日一题 1442.形成两个异或相等数组的三元组数目
LeetCode 每日一题 1442.形成两个异或相等数组的三元组数目问题描述简要思路代码问题描述简要思路暴力解的话就是三层 for 循环。这里使用前缀和可简化到 O(n2).先计算前缀和数组 s[ ]然后考虑查找条件:这里需要寻找的区 [ i , j - 1 ] 和 [ j , k ] 的异或结果相同即 (s[ j - 1 ] ^ s [ i - 1 ]) ^ (s[ k ] ^ s [ j - 1 ]) == 0,简化可得s [ i - 1 ] = s[ k ]故双循环寻找 s[
2021-05-18 01:59:26 252
原创 LeetCode 每日一题 993.二叉树的堂兄弟节点
LeetCode 每日一题 993.二叉树的堂兄弟节点问题描述简要思路代码问题描述简要思路递归查找 x , y 的父节点并层层记录深度,按照题意对照深度和父节点值即可。0ms 代码。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0),
2021-05-17 02:47:01 102
原创 LeetCode 剑指Offer 51.数组中的逆序对
LeetCode 剑指Offer 51.数组中的逆序对问题描述简要思路代码问题描述简要思路使用归并排序的分治思想。res = merge_sort(nums, l, mid) + merge_sort(nums, mid+1, r) 计算分开后每一部分的逆序对。res += mid-i+1; 计算两部分之间的逆序对。ps. 思路来源:y总AcWing归并排序模板题。代码class Solution {public: int temp[50010]; long long
2021-05-16 17:15:01 104
原创 LeetCode 每日一题 421.数组中两个数的最大异或值
LeetCode 每日一题 421.数组中两个数的最大异或值问题描述简要思路代码问题描述简要思路C++ 暴力解法很简单,但是会超时。class Solution {public: int findMaximumXOR(vector<int>& nums) { int maxxor = 0; for(int i=0; i<nums.size(); i++){ for(int j=i; j<nums.s
2021-05-16 00:26:53 88
原创 LeetCode 每日一题 13.罗马数字转整数
LeetCode 每日一题 13.罗马数字转整数问题描述简要思路代码问题描述简要思路简单题,暴力 if。简洁点的用map。代码class Solution {public: int romanToInt(string s) { int n = s.length(); int num = 0; for(int i=0; i<n; i++){ if(s[i] == 'M') num += 1000;
2021-05-15 23:24:19 103
原创 AcWing 算法基础课笔记 1.基础算法
AcWing 算法基础课笔记 1.基础算法排序快速排序基本思想思路讲解快排模板归并排序基本思想思路归并模板二分整数二分基本思想注意点整数二分模板浮点数二分基本思想浮点数二分模板排序快速排序基本思想基于分治。第一步 确定分界点x:取左边界q[l],或者取中间值q[(l+r)/2],或者取右边界q[r],也可以随机。第二步 调整区间(较难部分):让小于等于x的数在一个区间,大于x的在另一个区间第三步 递归处理左右两端平均时间复杂度: O(nlogn)每层期望是 n/2 ,递归深度 logn
2021-05-14 18:12:19 4052 3
原创 LeetCode 每日一题 12.整数转罗马数字
LeetCode 每日一题 12.整数转罗马数字问题描述简要思路代码问题描述简要思路通过取余和取模,从高位到低位,一位位地进行判断,并输出相应的罗马字母。题目不难但是写起来较麻烦,在评论看到了更简洁的解法,贴在了解法2,不过没有解法1速度快。代码解法1:class Solution {public: string intToRoman(int num) { string output_str; int p; p = num / 10
2021-05-14 16:12:39 153
原创 LeetCode 每日一题 1734.解码异或后的排列
LeetCode 每日一题 1734.解码异或后的排列问题描述简要思路代码问题描述简要思路重点在于先求出perm中的一个数,则可以推出其他所有数字。因为encoded = [perm[0]^perm[1], perm[1]^perm[2], perm[2]^perm[3], … perm[n-1]^perm[n]]所以,encoded的所有奇数项异或为temp = perm[1]^perm[2]^perm[3]^perm[4]^perm[5]^…^perm[n]另一方面,perm的长度我们可
2021-05-11 12:59:16 169
原创 LeetCode 每日一题 872.叶子相似的树
LeetCode 每日一题 872.叶子相似的树问题描述简要思路代码问题描述简要思路昨天的每日一题,因种种原因忘了记录上传。简单题,经典树的递归,两份代码是两种写法,应该算不上两种解法。写法2的三个if条件在树的题目还是蛮常用的。代码写法1:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;
2021-05-11 12:48:21 144
原创 LeetCode 每日一题 1723.完成所有工作的最短时间
LeetCode 每日一题 1723.完成所有工作的最短时间问题描述简要思路代码问题描述简要思路快过12点才想起来今天没打卡。打开一看,红色…上去就是一顿CV,再见。代码class Solution {public: int minimumTimeRequired(vector<int> &jobs, int k) { int n = jobs.size(); int len = 1 << n; //
2021-05-08 23:35:54 298
原创 LeetCode 初级算法 26.删除有序数组中的重复项
LeetCode 初级算法 26.删除有序数组中的重复项问题描述简要思路代码问题描述简要思路自己写的有点拉,借鉴了评论的简洁解法。代码class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size() < 2) return nums.size(); int j=0; for(int i=1; i<nums.si
2021-05-07 01:16:20 102
原创 LeetCode 每日一题 1486.数组异或操作
LeetCode 每日一题 1486.数组异或操作问题描述简要思路代码问题描述简要思路简单题,直接暴力解了。不过根据异或的数学规律必然有更好的方法,官方题解中提供了该时间复杂度O(1)的解法。代码class Solution {public: int xorOperation(int n, int start) { int output = start; for(int i=1; i<n; i++){ start = st
2021-05-07 00:28:15 105
原创 LeetCode 剑指Offer 03.数组中重复的数字
LeetCode 剑指Offer 03.数组中重复的数字问题描述简要思路代码问题描述简要思路第一反应是直接嵌套for循环就出来了。但是为了控制时间复杂度,使用两个单独的for循环,将时间复杂度由O(n2)降至O(n) 。实现使用一个数组存储nums中每一个数字出现的次数,然后遍历a数组,只要找到一个出现次数大于1的,就将该数字输出。代码class Solution {public: int findRepeatNumber(vector<int>& nums)
2021-05-06 12:46:00 69
原创 LeetCode 每日一题 1720.解码异或后的数组
LeetCode 每日一题 1720.解码异或后的数组问题描述简要思路代码问题描述简要思路经推导可知,对于a^b=c,可得,a^c=b,b^c=a,故只要一个for循环,将每个encoded中的数字与arr中当前数字异或,即可得到下一位。代码class Solution {public: vector<int> decode(vector<int>& encoded, int first) { int n = encoded.size(
2021-05-06 12:43:17 197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人