
每日一题
pg_dog
今日有酒今日醉,明日愁来明日愁。
展开
-
每日一题——链表合并
递归class Solution {public: /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list *原创 2017-07-14 16:42:56 · 248 阅读 · 0 评论 -
每日一题——求二叉树的高度,销毁二叉树
1,求二叉树的最大高度:int length(Node* root){ if(root == NULL) return 0; int leftLength = length(root->left); int rightLength = length(root->right); return (leftLength>=rightLength?(leftLe原创 2017-08-10 09:52:34 · 505 阅读 · 0 评论 -
每日一题——求二叉树叶子节点个数,第K层节点个数
1,求叶子节点个数int leafnum(Node* root){ if(root == NULL) return 0; if(root->left == NULL && root->right ==NULL) return 1; return leafnum(root->left)+leafnum(root->right);}2,第K层节原创 2017-08-09 23:49:36 · 578 阅读 · 0 评论 -
每日一题——atoi,itoa函数的实现
atoi是将字符串转换为长整形数的一种函数,itoa相反 atoi实现需注意一下点: 1,空格; 2,表示数值的正负号; 3,结束条件:非数字或‘\0’; 4,考虑溢出问题; 5,考虑异常输入问题(+abc …),用全局变量valid标识;#define INT_MAX ((int)0x7FFFFFFF)#define INT_MIN ((int)0x80000000)boo原创 2017-08-09 19:34:40 · 371 阅读 · 0 评论 -
每日一题——memcpy,strcpy,memmove的实现
memcpy与strcpy的区别: 1,用途不同:strcpy主要用来字符串拷贝,memcpy主要是其他类型的拷贝; 2,使用方式不同:strcpy是遇到‘\0’停止,memcpy是根据第三个参数来决定拷贝内容;memmove: 原型:void memmove( void dest, const void* src,size_t count ); 用途:从src的count个字符拷贝到des原创 2017-08-09 16:48:40 · 364 阅读 · 0 评论 -
每日一题——布隆过滤器
布隆过滤器:它实际上是一个很长的二进制向量和一系列随机映射函数。用于检索一个元素是否在一个集合中。它的优点是空间效率和时间效率都远远超过一般算法。缺点是有一定的误识率,和删除困难。 原理:当一个元素加入集合时,通过K个Hash函数将该元素映射成一个位阵列中的K个点,把他们置为1,检索时,只要看看这些点是不是都是1就可以知道它存在不。 如果有一个不为1,则该元素肯定不存在; 如果全是1,则该元素原创 2017-08-09 15:00:19 · 511 阅读 · 0 评论 -
每日一题——位图
定义:位图(bitmap)就是利用每一位来存储某种状态,但是状态又比较少的情况。 缺点: 1,只能用于整形; 2,可读性差; 3,位图存储的元素个数虽然比一般做法多,但是存储的元素大小受限于存储空间的大小。位图存储性质:存储的元素个数等于元素的最大值。比如, 1K 字节内存,能存储 8K 个值大小上限为 8K 的元素。(元素值上限为 8K ,这个局限性很大!)比如,要存储值为 65535 的原创 2017-08-09 13:33:51 · 457 阅读 · 0 评论 -
每日一题——字符串循环右移K位,时间复杂度O(N)
例:abcdefgh,循环右移K=3位,就成:fghabcde思路:从上面的例子可以看出,结果就是将后面的K位与前面的N-K位调换位置即可。将字符串逆置,就使得前后位置发生了变化,但是前后两部分的字符顺序出现了逆置,所以在逆置整个字符串时,首先将两小部分分别逆置,最后在整体逆置。 1, abcdefgh ->abcde , fgh 2, edcba , hgf 3, fghabcde/原创 2017-08-09 10:26:03 · 905 阅读 · 0 评论 -
每日一题——排序(从1-n连续的数进行排序)
有一堆从1到n连续的n个数,要求进行排序,时间复杂度是O(N)思路:从第一个数开始,使得a[i]与a[a[i] - 1]进行交换,直至 i == a[i]-1,即该值已回到了自己的所在位置(0对应1,1对应2,…),然后i++;直至结束。void sort(int a[],int len){ int i = 0; for(;i<len;) { int tmp原创 2017-08-09 09:49:34 · 867 阅读 · 0 评论 -
每日一题——栈实现队列,队列实现栈
1,用两个栈实现队列 2,用两个队列实现栈栈->队列思路:入队时,直接往stack1压入元素; 出队时,判断stack2是否有元素,有则直接弹出栈顶元素,没有则将stack1中的元素一一压入stack2,再弹出stack2的栈顶元素。class MyQueue {public: stack<int> stack1; stack<int> stack2; MyQu原创 2017-07-20 00:29:26 · 401 阅读 · 0 评论 -
每日一题——子树
有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。您在真实的面试中是否遇到过这个题? Yes 这个题其实不好思考,其中嵌套两层递归,需要清楚程序的运行。原创 2017-07-23 20:52:54 · 317 阅读 · 0 评论 -
每日一题——删除无头链表的非尾节点、逆向打印单链表
删除无头链表的非尾节点 这个题还有一种出法:在O(1)时间复杂度下删除单链表节点(非表头节点或非尾节点)void deleteNode(ListNode *node) { ListNode* tmp = node->next; node->val = tmp->val; node->next = tmp->next; delete t原创 2017-07-19 14:19:59 · 270 阅读 · 0 评论 -
每日一题——链表相交问题
1>判断两个链表是否相交,若相交,求交点(链表不带环) 2>判断两个链表是否相交,若相交,求交点(链表可能带环)//链表不带环ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { // write your code here if(headA ==NULL || headB == NUL原创 2017-07-19 10:21:25 · 412 阅读 · 0 评论 -
每日一题——带环链表
判断链表是否带环。 若带环求环的长度。 若带环求环的入口处。并计算上述问题的时间复杂度求环的入口处(前面几行代码证明带环)至于环的长度,从之前的推论可知,链表起始到环的入口的距离等于相遇点走到环入口的距离,所以环的长度就等于链表起始点到相遇点的距离(代码中的count)。 ListNode *detectCycle(ListNode *head) { // write yo原创 2017-07-18 23:55:09 · 414 阅读 · 0 评论 -
每日一题——二进制数1的个数
普通方法 int countOnes(int num) { // write your code here int count = 0; for(int i = 0;i<32;i++) { if((num & 1) == 1) count++; num >原创 2017-07-20 22:55:29 · 461 阅读 · 0 评论 -
每日一题——实现取最小值的栈
实现一个栈,要求实现push,pop,min(返回最小值)的时间复杂度均为O(1)思路:使用两个栈,一个是datastack,用来存放每次push进的数据,而另一个是minstack,专门存放当前的最小值。 压栈:如果datastack为空或插入的值小于minstack中的栈顶元素,说明该值是最小值,所以向两个栈中都插入该值;至于其他情况,说明该值不是最小值,所以将该值插入datastack,而将原创 2017-07-20 09:52:36 · 330 阅读 · 0 评论 -
每日一题——判断二叉树是否平衡,求一棵二叉树的镜像
1,判断一棵二叉树是否平衡 一棵树平衡是指它根节点到叶子节点的最长路径与最短路径只差不超过1。bool IsBanlance(Node* root,int& depth){ if(root == NULL) { depth = 0; return true; } int leftDepth = 0; int rightDep原创 2017-08-10 22:04:46 · 377 阅读 · 0 评论