随笔分类 -  基础算法

摘要:给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例 1:输入: "aacecaaa"输出: "aaacecaaa"示例 2:输入: "abcd"输出: "dcbabcd" 算法:KMP 阅读全文
posted @ 2019-08-06 15:31 YF-1994 阅读(564) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; const int N=100; bool st[N][N]; int res[N][N],n,m; int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; int main(void){ cin>>n>>m; for(int i=1,d=0,x=0,y=0;... 阅读全文
posted @ 2019-08-03 22:14 YF-1994 阅读(155) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; class Node{ public: Node *next[26]; bool isend; Node(){ for(int i=0;inext[word[i]-'a']) p->next... 阅读全文
posted @ 2019-07-31 23:49 YF-1994 阅读(202) 评论(0) 推荐(0)
摘要:对一个数组,如果要同时进行多次求区间和操作,修改元素操作。怎样能使时间复杂度降到最低?线段树为我们解决了这样一个问题。 阅读全文
posted @ 2019-07-31 17:04 YF-1994 阅读(167) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; vectormaxs,mins; vectorst; int where(int num, int n, int mi, int mx){ return (num-mi)*n/(mx-mi); } int vmax(vector& arr, int n){ int mx=INT_MIN... 阅读全文
posted @ 2019-07-29 16:07 YF-1994 阅读(235) 评论(0) 推荐(0)
摘要:其中P是要查找的字符串 阅读全文
posted @ 2019-07-28 17:40 YF-1994 阅读(133) 评论(0) 推荐(0)
摘要:堆,是一种完全二叉树的树状结构,分为小根堆与大顶堆。本文论述以及代码实现都是小根堆,大根堆同理。 如上图所示,我们可以看到一个完全二叉树,而每个结点的编号与其左右儿子的关系为(假设某结点的编号为u):left=2*u,right=2*u+1。 堆有如下的操作: 1.建堆 2.向下调整 3.向上调整 阅读全文
posted @ 2019-07-13 15:04 YF-1994 阅读(312) 评论(0) 推荐(0)
摘要:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 阅读全文
posted @ 2019-07-13 01:09 YF-1994 阅读(448) 评论(0) 推荐(0)
摘要:冒泡排序做了优化,都是很基础的排序算法就不多做什么说明了。 阅读全文
posted @ 2019-07-09 20:02 YF-1994 阅读(229) 评论(0) 推荐(0)
摘要:输入一个长度为n的整数序列。 接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数,表示整数序列。 接下来m行,每行包含三个整数l,r,c,表示一个操作。 输出 阅读全文
posted @ 2019-07-08 18:11 YF-1994 阅读(442) 评论(0) 推荐(0)
摘要:#include using namespace std; const int N=1000010; int a[N],q[N]; void merge_sort(int a[], int l, int r){ if(l>=r)return ; int mid=l+r>>1; merge_sort(a,l,mid),merge_sort(a,mid+1,r); i... 阅读全文
posted @ 2019-07-07 21:26 YF-1994 阅读(171) 评论(0) 推荐(0)
摘要:时间复杂度:O(n); 主要利用快排的partition思想(if(j-l+1>=k)左半边,否则右半边) 阅读全文
posted @ 2019-07-07 21:16 YF-1994 阅读(508) 评论(0) 推荐(0)
摘要:void quick_sort(int a[], int l, int r){ if(l>=r)return ; int i=l-1,j=r+1,x=a[l]; while(ix); if(i<j)swap(a[i],a[j]); } quick_sort(a,l,j),quick_sort(a,j+1,r); } 阅读全文
posted @ 2019-07-07 21:10 YF-1994 阅读(196) 评论(0) 推荐(0)
摘要:又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。 输入描述: 输出描述: m行,第i行输出第 阅读全文
posted @ 2019-07-07 20:43 YF-1994 阅读(437) 评论(0) 推荐(0)