![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm
wenmin_shu
好的资源,大家一起分享
展开
-
C++实现X进制到Y进制的转换
需求:C++实现X进制转化为Y进制函数,其中X和Y为2到64之间的任意数. 如果用C或Java实现,请自己修改函数声明。 CString convert(int input_mod, CString input_value, int output_mod) 举例: convert(2, "1000", 10)=="8" //把二进制的"1000"转换为十进制,为"8" convert(...原创 2018-09-30 23:26:06 · 1733 阅读 · 1 评论 -
文本文件记录了用户搜索信息,找到前top 10信息
一个文本文件,文件很大,记录了用户搜索关键词,按照搜索时间写进文本,要求统计出其中最频繁出现的前10个词,请给出思想。 建立Trie树,记录每颗树的出现次数,O(n*le); le:平均查找长度 维护一个10的小顶堆,O(n*lg10); 总复杂度: O(n*le) + O(n*lg10); #include <stdio.h>#include ...转载 2018-10-02 11:26:13 · 268 阅读 · 0 评论 -
快速排序
#include<iostream>using namespace std;void quickSort(int a[],int,int);int main(){ int array[]={34,65,12,43,67,5,78,10,3,70},k; int len=sizeof(array)/sizeof(int); cout<<"The orginal...转载 2018-10-02 11:19:48 · 96 阅读 · 0 评论 -
平面内的n个点,找到最近的2个点
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath> using namespace std; const double eps = 1e-8;...转载 2018-10-02 11:18:04 · 2047 阅读 · 0 评论 -
两个链表的公共节点
首先需要考虑空指针输入,有一个输入为NULL,就不会有交点。寻找两链表的第一个交点,简便的做法是求出两链表长度差diff后,让长的链表先走diff步,然后依次比较两链表节点,若相同则返回。但这一个思路的前提是:两个链表都不含环。因此,在考虑完空指针后,需要检验两个链表是否含有环。(1) 若一个有环一个无环,则肯定没有交点。(2) 若都无环,可以用上面的思路求出第一个交点;如果只...转载 2018-10-02 11:13:49 · 1011 阅读 · 0 评论 -
单链表的倒数第k个节点
为了能够只遍历一次就能找到倒数第k个节点,可以定义两个指针: (1)第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动; (2)从第k步开始,第二个指针也开始从链表的头指针开始遍历; (3)由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。 下图展示了在有6个结点的链表上找倒数第3个结点的过...转载 2018-10-02 11:11:33 · 1728 阅读 · 0 评论 -
两个递增有序数组合并成一个递增数组
public static int[] MergeList(int a[],int b[]) { int result[]; // 定义一个新数组,长度为两个数组长度之和 result = new int[a.length+b.length]; //i:a数组下标...转载 2018-10-02 11:06:10 · 3855 阅读 · 0 评论 -
非递归中序遍历二叉树
非递归中序遍历二叉树struct TreeNode{ int value; TreeNode* LTree; TreeNode* RTree;}void inorder(TreeNode* TRoot){ if(TRoot ==nullptr) { cout << "BTree is null" <<endl; return; } ...原创 2018-10-02 10:17:13 · 285 阅读 · 0 评论 -
判断一个整数是否是素数
素数: 只能被1和自身整除的数。1既不是偶数也不是素数static bool prime(int number){ if( number < 2) return false; for(int i = 2; i*i <= number; i++) { if(number % i == 0) return false; } return ...原创 2018-10-02 10:17:30 · 1117 阅读 · 0 评论 -
100层楼,2个鸡蛋,找出那一层鸡蛋破
解析:有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。我们先假设最坏情况下,鸡蛋下落次数为x,即我们为了找出N,一共用鸡蛋做了x次的实验。 那么,我们第一次应该在哪层楼往下扔鸡蛋呢?先让我们假设第一次是在第y层楼扔的鸡蛋, 如果第一个鸡蛋在第一次扔就碎了,我们就只剩下...转载 2018-10-01 00:03:14 · 616 阅读 · 0 评论 -
一头牛,3年后生了一头小牛(第4年开始),之后每年生一头
/*第一年 1头牛第二年 1头年第三年 1头年第四年 2头年f(n) = f(n-1) + f(n-3) */int main(){int n, i;int f1, f2, f3;cout<< "Please input the year you want:"<<endl;cin >> n;while (i <= n)...原创 2018-10-01 00:03:26 · 3154 阅读 · 0 评论 -
三角形判断
a >0b >0c > 0a-c < bc-a < bb-a < c 两个不溢出的数相加溢出的话==》 解决办法:将两数相加转换成两数相减 或者必须要用加法,溢出时前边全是1 FFFF ...原创 2018-10-01 00:03:34 · 205 阅读 · 0 评论 -
最大不重复子串
思路:利用hash表hashTable[256]来保存出现过的字符,然后从头开始遍历字符串,1、如果当前字符ch已经出现过(hashTable[ch]==1),则表示一个局部最长不重复子串已经出现:此时判断该子串长度len是否大于mlen,如果是,则更新mlen,以及最长子串的起始位置mstart。同时将start到重复字符ch之间的hash表重置为0(表示没有出现过),相应的长度...转载 2018-10-01 00:03:43 · 1313 阅读 · 0 评论 -
单链表逆转
struct LinkNode{ int value; LinkNode* next;}LinkNode* reverse(LinkNode* pHead){ if (pHead == nullptr) return nullptr LinkNode* pReverseHead = pHead; LinkNode p = pHead; LinkNode pnext = ...原创 2018-10-01 00:03:53 · 219 阅读 · 0 评论 -
冒泡排序
void pop(int num[]){ if( num == nullptr) return int len=num.length; int temp; for (int i =0; i < len; i++) { for(int j = len-1; j > len -i; j--) { if(num[j] < num[i]) ...原创 2018-10-01 00:04:16 · 106 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
原文转载 2018-10-02 11:27:00 · 171 阅读 · 0 评论