算法
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 · 333 阅读 · 0 评论 -
字符串包含问题
首先,这篇文章来自于July整理的PDF,我觉得很好,但是毕竟不是很方便阅读,所以,在这里整理下,以便随时可以温习。 这个问题不是很难,但是,想到如此多的思路不是很容易,很佩服July的思维的活跃以及善于对知识的整理。 下面,我们进入正题。第一节、一个两个字符串是否包含的问题 题目描述: 假设有两个由各个字母组成的字符串longstring和shorts转载 2016-04-03 09:34:07 · 347 阅读 · 0 评论 -
最大子数组和的三种算法
求一组数字中的和最大的连续子数组:1.暴力破解法:#include#includeusing 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 · 376 阅读 · 0 评论 -
快速排序之c++实现
此算法的时间复杂度为最坏情况下O(n2),期望时间复杂度为O(nlgn)。#include#includeusing 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 · 270 阅读 · 0 评论 -
计数排序c++实现
计数排序的前提是n个输入元素都大于0且小于k,并且k的值不会太大,实际上就是希望输入元素分布范围比较集中,否则将会浪费很多空间。下面直接上代码,时间复杂度为O(n) :#include#includeusing namespace std;void CountSort(vector &vec,vector &fin,int size){ int max=vec[0原创 2016-03-12 17:50:26 · 459 阅读 · 0 评论 -
Leetcode 之第一题 two sum
leetcode 第一题 two sum这一题的大意是有一组数,给出一个和,然后从这组数找出两个数,它们相加等于和,返回这两个数的下标。这一题据我所知共有三种解法:1.就是最简单的双重循环,用和减去外层循环中的数,然后在内层循环中找到差。这样子时间复杂度为O(n2),空间复杂度为O(1)。2.第二种解法就是把这组数进行快速排序,使得它们从小到大排序。然后两个指针分别从头和尾遍历,如原创 2016-04-19 16:32:27 · 288 阅读 · 0 评论