常见算法的实现
eurus_5bb67476
这个作者很懒,什么都没留下…
展开
-
二分查找
需要在在长度为n的数组中,查找target,并且输出其在数组中的下标。(前置条件:数组已排序)若数组未排序,则可以放入容器中(如:vector),进行sort#includeusing namespace std;static int index = 0;static int mid;void binarySearch(int a[],int len,int target,bo原创 2017-05-25 11:34:51 · 225 阅读 · 0 评论 -
求整数N的质因数
暴力解决先找出整数N的所有因数,再提出到其中不是质数的因数。(有一种题,整数N由其所有质因数的积来表示eg:35 = 3*5,;24 = 2*2*2*3如何求解的问题)#include#include//#include//#includeusing namespace std;int main(){ int num; cin >> num;原创 2017-05-25 15:11:58 · 571 阅读 · 0 评论 -
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。
链接:https://www.nowcoder.com/questionTerminal/28c1dc06bc9b4afd957b01acdf046e69来源:牛客网#include #include using namespace std;/*解题思路: (1)把字符串旋转形成另外一个字符串,称为旋转字符串; (2)求原字符串s1与旋转字符串s2中,最长公转载 2017-08-15 17:04:33 · 5694 阅读 · 0 评论 -
求二叉树宽度和深度
//二叉树宽度int widthOfBinaryTree(Node *root){ if(root == NULL) return 0; queue nodeQueue; int maxWidth = i; nodeQueue.push(root); while(true) { in原创 2017-09-18 12:00:34 · 624 阅读 · 0 评论 -
二叉树深度优先遍历和广度优先遍历
void widthFirst(Node *root){ queue nodeQueue; nodeQueue.push(root); while(!nodeQueue.empty()) { Node* temp = nodeQueue.front(); cout data转载 2017-09-18 17:07:29 · 417 阅读 · 0 评论 -
对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。例如,a=13243221,k=5,输出:12
对于一个n位正整数a,去掉其中任意k(k分析一个n位数,删去k位后,也就是剩下一个 n-k位 数,那么这个数要最小,我们就要保证我们我们得出的数是所有删除后得到的数的最小值。那么怎么保证呢?问题转换一下,如果最后就剩下一位,那么无意结果就是这些数字的最小值; 如果最后剩下两位呢,那么我们所要结果的最高位肯定在给定数的哪个区间呢,在这个区间(从左往右数第一位,从右往左数第二位转载 2017-10-30 22:07:30 · 4241 阅读 · 1 评论 -
KMPc++实现
#include#include#includeusing namespace std;void getNextArray(char* str2,int* next){ int len = strlen(str2); next[0] = -1; next[1] = 0; int pos = 2; int cn = 0; while(原创 2017-11-22 16:01:53 · 524 阅读 · 0 评论