
算法学习心得
ssssXishu
这个作者很懒,什么都没留下…
展开
-
基础算法_KMP算法
KMP算法传统暴力进行字符串匹配需要O(n^2)的时间复杂度,其过程可以简化为 i 是指向长字符串的指针,j 是指向短字符串的指针。每次在i开头的长字符串的子串内匹配,直到匹配成功或者遍历所有字符串。for(int i = 0; i < n; i ++){ bool f = true; for(int j =0; j < m; j++){ //如果当前字符串不等则跳出这次循环 if(q[i + j] != p[j]) {原创 2021-10-04 15:13:43 · 167 阅读 · 0 评论 -
基础算法_差分与前缀和
前缀和前缀和算法用于差分数组求前缀和,在求部分和时使用。通常在计算完差分数组后,用前缀和算法求出原数组。或在原数组的基础上,求其前缀和数组。一维数组//前缀和数组为q[],差分数组为d[]q[i] = q[i - 1] + d[i];对于一维数组,原数组的值为后向差分数组之和。//前缀和数组为q[]int l, r;cin >> l >> r;int ans = q[l] - q[r+1];对于一维数组,部分和为前缀和数组的值相减。二维数组//前缀和数组为原创 2021-09-07 20:58:07 · 191 阅读 · 0 评论 -
基础算法_整数二分
AcWing 789. 数的范围题目描述给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -原创 2021-05-29 20:47:32 · 198 阅读 · 0 评论