
算法总结
文章平均质量分 55
xiepengcheng716
这个作者很懒,什么都没留下…
展开
-
二分法查找的边界问题
作者:LightGHLi链接:https://www.zhihu.com/question/36132386/answer/105595067来源:知乎著作权归作者所有,转载请联系作者获得授权。对于不下降序列a,n为序列a元素的个数,key为关键字:1.求最小的i,使得a[i] = key,若不存在,则返回-1int binary_search_1(int a[],转载 2016-12-23 10:39:48 · 2724 阅读 · 0 评论 -
动态规划——字符串编辑问题
概念字符串的编辑距离,又称为Levenshtein距离,由俄罗斯的数学家Vladimir Levenshtein在1965年提出。是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数。其中,字符操作包括:删除一个字符 a) Insert a character插入一个字符 b) Delete a character修改一个字符转载 2017-04-26 20:54:29 · 936 阅读 · 0 评论 -
求数组中的次大值
#include #include #include using namespace std;int main(int argc, char** argv) { int s[10]; srand((unsigned)time(NULL)); for (int i = 0; i<10; i++) { s[i] = rand() % 1000 + 1; } printf("随原创 2017-05-01 19:24:28 · 1543 阅读 · 0 评论 -
各种排序算法分析与比较
1.直接插入排序每一趟将一个待排序的元素作为关键字,按照其关键字的大小插入到已经排好的部分序列的适当位置上。void InsertSort(int R[], int n){ if (R == nullptr || n<=0) return; int i, j; int temp; for (i = 1; i < n; ++i) { j = i - 1; temp =原创 2017-03-26 21:35:45 · 491 阅读 · 0 评论 -
网易2017实习笔试题-CPU双核调度问题(动态规划解决)
题目的大概意思:一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务。n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间。 输入包括两行:第一行为整数n(1 ≤ n ≤ 50)第二行为n个整数length原创 2017-03-25 22:19:17 · 7130 阅读 · 4 评论 -
在数组中找出3个数使得它们和为0
leetcode上的原题,美图的笔试题目。本质上这个问题是2数之和的问题扩展:在给定的数组中找出两个数a,b,使得a+b=sum。三个数之和为0,即a+b+c=0,可以转化为a+b=-c,这需要保证-c在数组中。下面代码采用了两个循环,第一个循环代表初始值,即先是第一个值a[0]不变,计算a[0]+a[1]+a[n-1],若大于0则k减1,计算a[0]+a[1]+a[n-2],若小于0原创 2017-03-31 16:16:50 · 3109 阅读 · 0 评论 -
判断两颗二叉树是否相等
题目:请实现两颗树是否相等的比较,相等返回0,否则返回其他值。注:A、B两树相等当且仅当RootA->val==RootB->val,而且A和B的左右子树对应相等或者互换后相等。用递归实现代码:bool Compare(TreeNode* RootA, TreeNode* RootB){bool is_TreeA_NULL=(RootA==nullptr);bool is_原创 2017-03-23 22:14:56 · 1883 阅读 · 0 评论 -
大数求和问题
参考博客:大数求和里面介绍很详细!转载 2017-03-22 22:33:43 · 505 阅读 · 0 评论 -
给定一个无序整型数组,找出数组中未出现的最小整数
给定一个无序整型数组,找出数组中未出现的最小整数(cvte笔试题)例如:输入:4,-1,1,3 输出:2方法一:int missNum(vector nums){ int l = 0; // 下标从0开始 int r = nums.size(); while (l < r)//从后往前判断每个位置的数是否满足要求 { if (n原创 2017-03-22 21:58:36 · 4225 阅读 · 0 评论 -
求字符串中不含重复字符的最长子串
题目要求:找到一个字符串中的一个连续子串,这个子串内不能有任何两个字符是相同的,并且这个子串是符合要求的最长的。例如:abcdeab,这个字符串有很多不重复子串,比如:abcde, bcdea, cdeab都是不重复子串,而且都是最长的。这个是一个经典的笔试题,百度也曾经出过。int Search(const char* str){ if(str==NULL) return 0原创 2017-03-27 19:40:50 · 634 阅读 · 0 评论 -
华为机试 四则运算
/** 把中缀表达式改成后缀表达式* 遍历字符串,如果是数字,则输出,同时加上空格和后面的字符分隔* 如果括号,有2种情况:* 1 如果是(,进栈* 2 如果是),将栈里面对应的(以及它上面的符号出栈* 如果是符号,总的规则是只要栈顶的符号的优先级不低于当前符号,则把栈顶的符号一一出栈,* 直到遇到栈顶的符号的优先级低于当前符号为止。具体有2种情况:* 1 如果是+或-,将栈顶的符号转载 2017-07-14 20:49:26 · 822 阅读 · 0 评论