10 2015 档案
摘要:题目:给定一组单词,找出其中的最长单词,且该单词由这组单词中的其他单词组成。思路:首选将单词按照字符串大小从大到小排序,然后依次判断该单词是否由其他单词组成。将单词保存在散列表中,这样容易查找。判断单词组成:依次切分为左右两个字符串,然后递归查找判断。(为避免重复计算,在每一次递归中都保存中间结果,...
阅读全文
摘要:题目:有个内含单词的超大文本,给定任意两个单词,找出这个文件中两个单词的最短距离。思路:通过两个两个变量来记录两个单词最后出现的位置,然后每次计算两者的距离,并更新最小距离。假设需要重复查找任意两个单词的最短距离,则需要构造一个散列表,记录每个单词及其出现的位置。当查找某两个单词的最短距离时,只需找...
阅读全文
摘要:题目:数出0到n(含)中数字2出现了几次。思路:1、暴力方法,数出每个数字包含几个2,然后累加起来。2、分析:分别考虑数字n每一位出现2的次数,如123123;从左往右考虑4123123;考虑第一个1(即第6位),该位出现2的次数为4*10^6/10;考虑第一个2(即第5位),该位出现2的次数为41...
阅读全文
摘要:题目:从大小为n的整数数组A中随机选出m个整数,要求每个元素被选中的概率相同。思路:n选m,等概率情况下,每个数被选中的概率为m/n。方法:初始化:从A中选择前m个元素作为初始数组;随机选择:从第m个元素开始,依次遍历数组下标i,并通过随机生成器生成数字k(生成0~n),如果k#include#in...
阅读全文
摘要:题目:求字符串表达式(不含括号)的值思路:数字分离运算符优先级+-*/只需一个字符串栈,保存数字和运算符代码:#include#include#include#includeusing namespace std;templateout_T convert(const in_T &t){ st...
阅读全文
摘要:题目:求字符串表达式的值,如"-2+(3+4)-5*6",返回-25.思路:分离数字和运算符并考虑运算符的优先级,如(),*,/,+,-等。两个栈:一个存数字,一个存运算符代码:#include#include#include#includeusing namespace std;double ca...
阅读全文
摘要:题目:给定一个整数,打印该整数的汉字描述。(例如:11001:“一万一千零一”)思路:按照以下位数来转换:亿级万级千及千以下代码:由于编程环境不支持中文,故以拼音代替,若需转为汉字,只需改为对应汉字并将代码中的空格符去掉即可。#includeusing namespace std;string bi...
阅读全文
摘要:题目:编写一个方法,洗一副牌,要求做到完美洗牌,即这副牌52!中排列组合出现的概率相同。思路:1、递归2、循环代码:#include#include#includeusing namespace std;int rnd(int lower,int higher){ return rand()%...
阅读全文
摘要:题目:给定一个整数,打印该整数的英文描述。(例如:“One Thousand, Two Hundred Thirty Four”)思路:每三位转换一次,在适当位置插入million,thousand。即:convert(19 323 984)=convert(19)+" million, "+con...
阅读全文
摘要:题目:Given a binary tree, find the maximum path sum.For this problem, a path is defined as any sequence of nodes from some starting node to any node in ...
阅读全文
摘要:题目:Given a stringsand a dictionary of wordsdict, determine ifscan be segmented into a space-separated sequence of one or more dictionary words.For exa...
阅读全文
摘要:题目:给定一数组,里面的数字为1~N,每个数出现一次或两次,求只出现一次的最小数。要求:空间复杂度:O(1),时间复杂度:O(n)思路:题目给定的数字为1~N,因此可以通过交换的方法,将数组下标与数字对应存放,如数字1与下标为0的数字交换,数字3与下标为2的数字交换。1、设置变量min来保存出现两次...
阅读全文
摘要:题目:给定一数组,里面的数字为1~N,每个数出现一次或两次,求只出现一次的最小数。要求:空间复杂度:O(1),时间复杂度:O(n)思路:题目给定的数字为1~N,因此可以通过交换的方法,将数组下标与数字对应存放,如数字1与下标为0的数字交换,数字3与下标为2的数字交换。下面给出两种不同的交换思路:1、...
阅读全文
摘要:题目:说起麻将,那可是川渝市民的最爱,无论亲朋好友聚会,还是业务谈判,总是少不了麻将的声音。成都麻将只能包括3种类型:条,筒,万。没有“门、东南西北、红中”。每种牌都是数字从1到9,每个数字有4张,共36张。筒,万,条均一样。胡牌简化规则如下:1.必须有一个对子,即两张相同的牌,比如:两个2筒,两个...
阅读全文
摘要:题目:Jefflovesplayinggames,Gluttonoussnake(anoldgameinNOKIAera)isoneofhisfavourites.However,afterplayinggluttonoussnakesomanytimes,hefinallygotboredwith...
阅读全文
摘要:题目:ApsIslandhasmanycities.Inthesummer,manytravellerswillcometotheislandandattendfestiveeventsindifferentcities.ThefestiveeventsinApsIslandarecrazy.Onc...
阅读全文
摘要:题目:从一个字符串中找到一个连续子串,该子串中任何两个字符不能相同,求子串的最大长度并输出一条最长不重复子串。思路:利用hash表hashTable[256]来保存出现过的字符,然后从头开始遍历字符串,1、如果当前字符ch已经出现过(hashTable[ch]==1),则表示一个局部最长不重复子串已...
阅读全文
摘要:C/C++程序设计员应聘常见面试笔试试题深入剖析http://www.nowcoder.com/discuss/1826?type=2&order=0&pos=23&page=11.引言本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大...
阅读全文
摘要:题目:编写一个函数,输入为一个矩阵,打印这个矩阵转置后的结果。例:输入矩阵是1,2,3,45,6,7,89,10,11,1213,14,15,16打印结果应该是13,9,5,114,10,6,215,11,7,316,12,8,4思路:1、从外到内,一圈一圈地循环替换;2、对矩阵进行从[i,j]到[...
阅读全文
摘要:题目:输入字符串中对称的子字符串的最大长度。比如输入字符串“roorle”,由于该字符串里最长的对称子字符串是“roor”,因此输出4.思路:1、求字符串”roorle“和反序”elroor“的最长公共子串2、最长回文子串代码:1、最长公共子串#includeusing namespace std;...
阅读全文
摘要:题目:给定一个正整数n,求1/n的小数表示,如:1/2=0.51/3=0.(3)1/6=0.1(6)1/7=0.(142857)其中括号表示小数中的循环部分。思路:考虑一下除法运算的过程:当余数与之前运算出现重复时,那么说明循环已经开始,因此可以通过hash表来记录余数对应的位置。被除数 除数 ...
阅读全文
摘要:题目:给定正整数N,要求对1~N的所有数按照字典序来排列,如:1-10:1 10 2 3 4 5 6 7 8 91-100:1 10 100 11 12 13 14 15 16 17 18 19 2 20 21 ......思路:1、字符串排序将1~N所有数字转为字符串,存进vector中,对vec...
阅读全文
摘要:主要内容:1、动机2、聚类3、python实现一、动机之前我们实现的分类器都是基于带标签或类别的数据集,这种学习方法叫做有监督的学习,这些数据一般都是通过人工标注的,成本和代价比较高。而实际中的原生数据都是没有标注的,如果没有标签,是否也能为这些数据进行分类呢?答案是肯定的,那就是本文要介绍的无监督...
阅读全文
摘要:主要内容:1、动机2、基于朴素贝叶斯的文本分类器3、python实现一、动机之前介绍的朴素贝叶斯分类器所使用的都是结构化的数据集,即每行代表一个样本,每列代表一个特征属性。但在实际中,尤其是网页中,爬虫所采集到的数据都是非结构化的,如新闻、微博、帖子等,如果要对对这一类数据进行分类,应该怎么办呢?例...
阅读全文
摘要:主要内容:1、动机2、贝叶斯定理3、朴素贝叶斯分类器4、NB与KNN比较5、python实现一、动机1、前面提到的最近邻、K近邻作为分类器来说,只是说新样本更大可能性地属于某一类,并不能准确地给出一个确信度;2、最近邻、K近邻分类器中,每次为新样本做分类都需要将所有训练样本全盘托出,计算一遍,这样的...
阅读全文
摘要:主要内容:1、十折交叉验证2、混淆矩阵3、K近邻4、python实现一、十折交叉验证前面提到了数据集分为训练集和测试集,训练集用来训练模型,而测试集用来测试模型的好坏,那么单一的测试是否就能很好的衡量一个模型的性能呢?答案自然是否定的,单一的测试集具有偶然性和随机性。因此本文介绍一种衡量模型(比如分...
阅读全文
摘要:1、动机2、基于内容的分类器3、python实现一、动机在前面的文章中介绍了基于用户和基于物品的协同过滤推荐方法,其实无论是基于用户还是基于物品,都是通过群体效应来进行推荐,因为衡量相似度的向量都是基于一定群体用户的评分,所以推荐出来的物品都是热门的流行的物品,对于一些冷门物品可能就无法收到亲睐。而...
阅读全文
摘要:主要内容:1、显性和隐性行为2、基于物品的协同过滤3、python实现4、基于用户和基于物品的协同过滤应用一、显性和隐性行为:了解用户喜好的途径有两种:1、显式的标记,即对物品进行“踩”/"赞"或打分等明显行为,例如购物网站对商品的评分等;2、隐式的跟踪,即跟踪用户对物品的行为,如点击、浏览等隐藏行...
阅读全文
摘要:主要内容:1、k近邻2、python实现1、什么是k近邻(KNN)在入门-1中,简单地实现了基于用户协同过滤的最近邻算法,所谓最近邻,就是找到距离最近或最相似的用户,将他的物品推荐出来。而这里,k近邻(K Nearest Neighbor)的意思就是,找出最近或最相似的k个用户,将他们的评分(相似度...
阅读全文
摘要:主要内容:1、距离度量2、皮尔逊关系系数3、cosine相似度4、方法的选择1、距离度量距离度量是最简单的衡量相似度的方法,公式如下:当r=1时,为曼哈顿距离(manhattan distance);当r=2时,为欧几里得距离(Euclidean distance);优点:简单缺点:当数据某些属性或...
阅读全文
摘要:主要内容:1、什么是基于用户的协同过滤2、python实现1、什么是基于用户协同过滤:协同过滤:Collaborative Filtering,一般用于推荐系统,如京东,亚马逊等电商网站上的“购买该物品的用户还喜欢/购买”之类的栏目都是根据协同过滤推荐出来的。基于用户的协同过滤:User-based...
阅读全文