算法
文章平均质量分 52
tom555cat
这个作者很懒,什么都没留下…
展开
-
为面试做准备之归并排序
#include #include using namespace std;void Merge(vector &SR, int i,int m,int n){ int j,k,t=i; vector TR; for(j=m+1,k=t; t<=m && j<=n; ++k) { if(SR[t] <= SR[j]) { TR.push_back(SR[t++]);原创 2013-11-19 18:20:47 · 743 阅读 · 0 评论 -
背包问题总结
一、0-1背包使用O(V)原创 2014-09-10 17:42:22 · 487 阅读 · 0 评论 -
原地归并排序
/* * 原地归并排序 */void reverse(int *arr, int n){ int i = 0, j = n-1; while(i < j) { swap(arr[i], arr[j]); i++; j--; }}void exchange(int arr[], int n, int i){ reverse(arr, i); reverse(a原创 2014-09-22 10:54:26 · 430 阅读 · 0 评论 -
关于树的路径的两道题目的理解
第一道题目是找出从二叉树中从根到某一结点的路径。原创 2014-08-28 17:43:33 · 588 阅读 · 0 评论 -
从1到n的数字中1的个数
/* * 从1到N中1的数目 */long long Sum1(unsigned int n){ long long iCount = 0; long long iFactor = 1; long long iLowerNum = 0; long long iCurrNum = 0; long long iHigherNum = 0; while(n/iFactor != 0)原创 2014-09-22 15:12:03 · 499 阅读 · 0 评论 -
给定一个数组,按序排列,从数组找出若干个数,使得这若干个数字的和与M最为接近,(背包问题)
思路:对于数组中的每一个数,去原创 2014-09-10 21:30:10 · 2224 阅读 · 1 评论 -
微软100题总结
一、二元查找树变为双向列表注意:什么可以放在if利弊阿原创 2014-09-21 17:00:04 · 515 阅读 · 0 评论 -
有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
使用回溯法int countQ = 0;int Target = 0;int coin[4] = {1,2,5,10};int total=0;vector solution;void dfs(int index){ if(total == Target) { countQ++; cout<<countQ<<":"; for(int i=0; i<(int)so转载 2014-09-23 15:56:34 · 7515 阅读 · 0 评论 -
求全组合
转载自:http://blog.csdn.net/sagadean/article/details/8030541原创 2014-09-13 10:53:34 · 493 阅读 · 0 评论 -
将字符串转化为浮点数
double convertToFloat(char* str){ double num = 0.0; int i = 0; double t = 10; bool isNegative = false; bool firstPointFlag = false; if(str == NULL) return num; if(str[i] == '-') { isNegat原创 2014-09-28 12:43:43 · 2499 阅读 · 0 评论 -
快慢指针
/* * 快慢指针 */LNode* FindK(LinkList L, int k){ if(L == NULL) return NULL; LNode* fast = L; LNode* slow = NULL; for(int i=0; i<k-1; i++) { if(fast->next != NULL) { fast = fast->next;原创 2014-09-28 10:35:18 · 440 阅读 · 0 评论 -
字符串的最大回文长度
int longestReverse(char *str){ int count = 0; int max = 0; int length = strlen(str); stack s; s.push(*str); for(int i=1; i<length; i++) { if(s.size() > 0 && str[i] == s.top()) { count+=原创 2014-09-29 20:03:43 · 629 阅读 · 0 评论 -
在字符串中寻找连续最长的数字串
int findMaxNumLength(char *str){ int max = 0; int count = 0; char* index = str; while(*index != '\0') { if(*index >='0' && *index <='9') { count++; } else { if(count > max) {原创 2014-09-29 16:16:08 · 439 阅读 · 0 评论 -
左旋数组中二分查找
#include #include int binary_search_in(int a[], int n, int x){ int left = 0; int right = n-1; while(left <= right) { int mid = left + ((right - left)>>1); if(a[mid] == x) return mid;原创 2014-09-30 16:24:09 · 1084 阅读 · 0 评论 -
用递归判断一个数组是否是升序
bool IsIncrement(int a[], int n){ if(n == 1) return true; if(n == 2) return a[n-1] >= a[n-2]; return IsIncrement(a, n-1) && (a[n-1] >= a[n-2]);}转载 2014-10-01 10:26:44 · 1589 阅读 · 0 评论 -
字符串逆置(递归和非递归)
递归的单链表逆置(di)/* * 逆置单链表,返回原单链表的尾结点 */Node* ReverseList(Node *pHead, Node*& reverseHead){ if(!pHead) return NULL; if(pHead->next) { Node* last = ReverseList(pHead->next, reverseHead); las原创 2014-08-28 18:51:31 · 989 阅读 · 0 评论 -
strstr, strcmp
strcmpchar* strcpy1(char* strDest, char* strSrc){ if(strSrc == NULL) return NULL; char *i = strSrc; char *j = strDest; while(*i != '\0') { *j++ = *i++; } *j = '\0'; return strDest;}原创 2014-10-01 12:08:58 · 663 阅读 · 0 评论 -
大整数的加法、减法和乘法
大整数减法整数的表示采用string, string的begin()为高位,end()为低位转载 2014-10-04 18:24:38 · 668 阅读 · 0 评论 -
完全背包---找零问题
给定一张整钱C,换成不同原创 2014-09-10 20:12:02 · 677 阅读 · 0 评论 -
荷兰国旗
/* * 荷兰国旗问题0,1,2 * 采用三个标记 * begin指向排好的0后面的第一个 * current指向1 * end指向排好的2之前的一个 */void DutchFlag(int a[], int n){ int current = 0; int begin = 0; int end = n-1; while(current <= end) { if(a原创 2014-09-22 10:18:22 · 561 阅读 · 0 评论 -
编程面试的10大算法概念汇总
本文原文来自:http://blog.jobbole.com/52144/本文由 伯乐在线 - 敏敏 翻译自 programcreek.com。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下转载 2013-11-28 15:22:24 · 624 阅读 · 0 评论 -
为面试做准备之插入排序
//第0个位置存放哨兵void insert_sort(int *A, int length){ for(int i=2;i<length;++i) { int j = i-1; A[0] = A[i]; //将第i个值存放进哨兵 while(A[0]<A[j]){ A[j+1] = A[j];原创 2013-11-19 16:14:57 · 713 阅读 · 0 评论 -
转自fly1988happy 倒排索引
1.简介倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。倒排文件(倒排索引),索引对象是文档或者文档集合中的单词等,用来存储这些单词转载 2013-11-08 21:51:16 · 480 阅读 · 0 评论 -
浅谈尾递归 转自豆瓣God-Mode
浅谈尾递归2013-02-10 14:12:57在《数据结构与算法分析:C描述》(Data Structures and Algorithm Analysis In C)的第三章中,以打印链表为例,提到了尾递归(tail recursion)并指出了尾递归是使用递归极其不当的例子,它指出虽然编译器会对尾递归自动优化,但即便如此最好还是不要去写尾递归。而我在《算法精解:C语言描述转载 2013-10-31 20:17:16 · 703 阅读 · 0 评论 -
堆排序
#include using namespace std;/* #堆排序#% #数组实现#%*///#筛选算法#%void sift(int d[], int ind, int len){ //#置i为要筛选的节点#% int i = ind; //#c中保存i节点的左孩子#% int c = i * 2 + 1; //#+1的目的就是为了解决节点从0开转载 2014-03-31 22:18:37 · 607 阅读 · 0 评论 -
MS100题第一题
#include #include typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BTree,DoubleList;DoubleList *pHead;DoubleList *pListIndex;int create_bitree(BTree T){ int a;原创 2013-11-21 16:04:50 · 692 阅读 · 0 评论 -
归并排序及其适用范围
====[[C语言]]====/*=============================================================================## FileName: merge_sort_in_c.c# Desc: 归并排序## Author: gavinyao# Email: gav转载 2014-03-31 22:23:54 · 2648 阅读 · 0 评论 -
百度研发鄙视题
2》一串首尾相连的珠子m个,有N中颜色,取其中一段包含原创 2014-07-17 22:22:42 · 484 阅读 · 0 评论 -
海量数据处理:十道面试题与诗歌海量数据处理方法我自己的总结
1. 海量日志数据,提取出某日访问百度次数最多的那个IP。原创 2014-07-07 22:59:34 · 622 阅读 · 0 评论 -
为面试做准备之计数排序
计数排序#include using namespace std;const int MAXN = 100000;const int k = 1000;int a[MAXN], c[MAXN], rank[MAXN];int main(){ int n; cin>>n; for(int i = 0; i<n; ++i) {原创 2013-11-28 18:40:54 · 669 阅读 · 0 评论 -
shell排序
shell排序,又叫缩小增量法。shell排序为什么比插入排序好原创 2014-07-12 20:05:32 · 511 阅读 · 0 评论 -
KMP算法
KMP算法需要提前求一个前缀函数。这个前缀函数的定义是:原创 2014-07-12 19:39:31 · 492 阅读 · 0 评论 -
求正整数n所有可能的和式的组合
一道人搜面试题:求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)原创 2014-09-05 17:15:20 · 982 阅读 · 0 评论 -
快速排序
快速排序#include using namespace std;int Quick_Sort(int *A, int left, int right){ int tmp = A[(left+right)/2]; int i=left,j=right; do{ while(A[i]<tmp && i<right)原创 2013-11-19 15:59:41 · 696 阅读 · 0 评论 -
为面试做准备之冒泡排序
#include using namespace std;void bubble_sort(int *a, int n){ for(int i=0;i<n-1;i++) //j是i的相邻的下一个,i和j做比较,如果符合条件就i和j互换 { for(int j=i+1;j<n;j++) { if(a[原创 2013-11-19 16:53:17 · 727 阅读 · 0 评论 -
百度2014移动研发笔试题目
一.简答题 1.简述计算机的存储系统分为哪几个层次,为什么这样的分层能够提高程序的执行效率。 2.浮点数在计算中如何表示,如何对浮点数判等。 3.简述TCP与UDP协议的差别,两者与HTTP的关系。并列举HTTP的方法,以及常见的返回状态码。二.算法与程序设计 1.设计一个反转字符串的函数 char *reverse_str(char *str),不使用系统函数。原创 2014-09-21 21:21:35 · 723 阅读 · 0 评论 -
编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包问题求解)
思路来自:点击打开链接111原创 2014-09-10 10:38:10 · 1001 阅读 · 0 评论 -
DTW备忘录
在比较两段运动捕捉数据时,由于时间变形和空间变形因素,所以不能直接比较两帧之间的相似度,需要借助于DTW。比如运动序列A为基准运动,有M帧;B为测试运动,有N帧。计算A和B的DTW距离和最长公共子串算法一致。下面是笔记总结:原创 2015-01-24 16:22:48 · 588 阅读 · 0 评论