
算法
chiliaolm
奋斗是幸福的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序的c++实现代码
#include #include #include #include using namespace std; void input(vector &v) { v.push_back(0); int data; while(cin>>data) { v.push_back(data);原创 2016-03-05 11:05:20 · 364 阅读 · 0 评论 -
字符串包含问题
首先,这篇文章来自于July整理的PDF,我觉得很好,但是毕竟不是很方便阅读,所以,在这里整理下,以便随时可以温习。 这个问题不是很难,但是,想到如此多的思路不是很容易,很佩服July的思维的活跃以及善于对知识的整理。 下面,我们进入正题。 第一节、一个两个字符串是否包含的问题 题目描述: 假设有两个由各个字母组成的字符串longstring和shorts转载 2016-04-03 09:34:07 · 381 阅读 · 0 评论 -
最大子数组和的三种算法
求一组数字中的和最大的连续子数组: 1.暴力破解法: #include #include using namespace std; int maxsum(const vector &vec) { int size=vec.size(); int sum=0; int max,left,right; max=vec[0]; for(int i=0;i { for(int j原创 2016-03-10 21:53:35 · 409 阅读 · 0 评论 -
快速排序之c++实现
此算法的时间复杂度为最坏情况下O(n2),期望时间复杂度为O(nlgn)。 #include #include using namespace std; void swap(int &i,int &k) { int temp=i; i=k; k=temp; } int Partition(vector &vec,int q,int r) {原创 2016-03-11 20:10:47 · 297 阅读 · 0 评论 -
计数排序c++实现
计数排序的前提是n个输入元素都大于0且小于k,并且k的值不会太大,实际上就是希望输入元素分布范围比较集中,否则将会浪费很多空间。 下面直接上代码,时间复杂度为O(n) : #include #include using namespace std; void CountSort(vector &vec,vector &fin,int size) { int max=vec[0原创 2016-03-12 17:50:26 · 490 阅读 · 0 评论 -
Leetcode 之第一题 two sum
leetcode 第一题 two sum 这一题的大意是有一组数,给出一个和,然后从这组数找出两个数,它们相加等于和,返回这两个数的下标。 这一题据我所知共有三种解法: 1.就是最简单的双重循环,用和减去外层循环中的数,然后在内层循环中找到差。这样子时间复杂度为O(n2),空间复杂度为O(1)。 2.第二种解法就是把这组数进行快速排序,使得它们从小到大排序。然后两个指针分别从头和尾遍历,如原创 2016-04-19 16:32:27 · 325 阅读 · 0 评论