Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
算法思路:
将单词进行排序。
用map统计排序后相等的出现次数。
将次数大于1的单词放入结果集。
第1次出现时,因次数最终是否大于1不明郎,将其暂存入...
分类:
其他好文 时间:
2015-01-31 16:29:04
阅读次数:
153
判断完全二叉树:
完全二叉树,除最后一层外,每一层上的节点树都达到了最大值;在最后一层上只缺少右边的若干节点!
算法思路:
按层次(从上到下,从左到右)遍历二叉树,当遇到一个节点的左子树为空时,则该节点右子树必须为空,且后面遍历的节点左
右子树都必须为空,否则不是完全二叉树。
代码:
bool IsCompleteBTree(BTree* pRoot)
{
if (pRoot =...
分类:
编程语言 时间:
2015-01-12 13:06:28
阅读次数:
475
最近闲下来又开始继续折腾推荐系统了,声明一下,本文只是介绍一下最基础的基于内容的推荐系统(Content-based recommender system)的工作原理,其实基于内容的推荐系统也分三六九等Orz,这里只是简单的较少一下最原始的、最基本的工作流程。基于内容的推荐算法思路很简单,它的原理大...
分类:
编程语言 时间:
2015-01-10 01:02:39
阅读次数:
317
【算法思路】利用折半查找的思路去查找这个最小元素
【编程步骤】
* 1. 如果数组num只有一个元素,则所求的最小的元素就是它了;
* 2. 若left到right位置的元素严格递增,则最小的元素为num[left],如左图
否则,如右图,利用折半查找,若left到mid递增有序,则最小元素必出现在右边部分:mid+1到right;
若mid到right递增有序,则最小元素出现在左边部分:left到mid;
while(left<right){
if(num[left]<num...
分类:
其他好文 时间:
2015-01-07 16:55:49
阅读次数:
171
链式存储结构.单链表2
顺序存储结构的创建实质是一个数组的初始化,存储空间连续且其大小和类型已经固定;单链表存储空间不连续,是一种动态结构且它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。
一.单链表的整表创建
创建单链表的过程就是一个动态生成链表的过程,即从“空表”的初始化起,依次建立各元素结点,并逐个插入链表。
1.算法思路
...
分类:
其他好文 时间:
2014-12-28 20:51:41
阅读次数:
211
题目:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),控件复杂度为O(1)
算法思路:
如果一个数组当中,只要一个数字出现一次,其他都是出现两次,那么我们只要把所有的数进行异或得到的就是结果
现在有两个数字出现一次,那么我们还是异或所有的数,最后的到的结果就是这两个不想等的数字的异或结果
比如 2 4 3 6 3 2...
分类:
编程语言 时间:
2014-12-27 13:58:44
阅读次数:
258
一、垃圾回收用到的主要算法
1.引用计数法
算法思路:
给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就加1;当引用失效时,计数器值就减1;当计数器的值为0时就可以把该对象删除。
算法优点:
实现简单,判定效率高
算法缺点:
难以解决对象之间相互循环引用的问题。
2.标记清除法
算法思路:
算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标...
分类:
其他好文 时间:
2014-12-17 21:03:11
阅读次数:
161
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义为:
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
算法思路:
链表 1-->2-->3-->4-->5
建立一个 pPrev节点,而且为空节点; pPrev = NULL;再建立一个节点pNode = ...
分类:
编程语言 时间:
2014-12-12 15:00:59
阅读次数:
163
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)的时间删除该节点。
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted);
算法思路:
一般我们是从头节点开始遍历,知道找到要...
分类:
其他好文 时间:
2014-12-10 10:52:21
阅读次数:
153
题目:用两个队列实现一个栈
算法思路:
现有两个队列q1与q2,入栈:如果q1与q2都为空,那么我们选择q1入栈也就是入队列,比如q1入栈 1 2 3 4 ;现在要出栈,后进先出那么4要出栈。但是q1是一个
队列,先进先出,那么 1 2 3出队列 q2 1 2 3 入队列,q1中此时剩余4,把4出对列达到出栈的效果。 这个时候如果我们又加入一个元素5,那么我们应该把5放到
q1还是q2,...
分类:
编程语言 时间:
2014-12-09 12:23:45
阅读次数:
221