算法题
文章平均质量分 75
Jeans_
这个作者很懒,什么都没留下…
展开
-
单链表反转(递归和非递归)
单链表反转有递归和非递归两种算法。 下面定义节点 [cpp] view plaincopy typedef struct ListNode{ int value; ListNode* next; }ListNode; 在递归算法中的做法是: 1找到最后一个节点和倒数第二个节点,把最后一个节点设为头节点的后继 2反转这两个节点 3倒数第转载 2015-03-26 16:12:39 · 436 阅读 · 0 评论 -
用两个栈实现一个队列——我作为面试官的小结
两年前从网上看到一道面试题:用两个栈(Stack)实现一个队列(Queue)。觉得不错,就经常拿来面试,几年下来,做此题的应该有几十人了。通过对面试者的表现和反应,有一些统计和感受,在此做个小结。 用C++描述,题目大致是这样的: 已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue)出队(Dequeue)方法。转载 2015-03-26 16:24:34 · 348 阅读 · 0 评论 -
判断两个链表是否相交并找出交点
问题描述: 一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。 思路: 1、碰到这个问题,第一印象是采用hash来判断,将两个链表的节点进行hash,然后判断出节点,这种想法当然是可以的。 2、当然采用暴力的方法也是可以的,遍历两个链表,在遍历的过程中进行比较,看节点是否相同。 3、第三种思路是比较奇特的,在编程之美上看到的。先遍历第一个链表到他的尾部,然后将尾部转载 2015-03-26 16:26:33 · 383 阅读 · 0 评论 -
算法十二:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
第17题(字符串): 题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。 分析:需要一个容器来存放每个字符出现的次数,由于char是一个长度为8的数据类型,因此总共有256种可能。于是我们创建一个长度为256的数组,每个字符根据其ASSIC码值作为数组的下标对应数组的对应项,数组中存放每个字符对应的次数,转载 2015-03-21 00:30:04 · 988 阅读 · 0 评论