- 博客(172)
- 收藏
- 关注

原创 面试题[hash_map、字典树与倒排索引]: 全文检索
原始题目 给定一篇英文文献,然后查某个单词在这篇文章中出现了多少次(忽略大小写)。注意这个查找会出现很多次,每一次查不同的单词,请问用什么数据结构和算法来实现尽可能快地查找?这个很容易想到首先对文章进行分词,然后利用hash_map来保存所有的单词和单词出现的次数。进阶一 如果想要查找某一个字符串在所有单词的后缀中出现了多少次呢?比方说文章包含三个单词:”auto”, “goto”, “g
2015-03-23 21:41:15
2599
原创 [面试题][统计学] 放球问题
有100个球,其中50个红球、50个蓝球,有两个框,请问如何放置这100个球,使得从这两个框中任选一个,然后再从框里任选一个球时得到红球的概率最大?考虑到第一步选择每个框的概率都是1/2,那么可以先在一个框里放一个红球,然后把剩下的99个球都放在第二个框,这样选到红球的概率是最大的,概率是: 12∗1+12∗4949+50=14819812∗1+12∗4949+50=148198\f...
2018-05-07 21:17:18
2149
原创 [面试题][数学与概率]设计随机数生成器
假设你已经有一个随机数生成器,能够以概率p生成0,概率1-p生成1,请问如何设计算法以概率q等概率地生成0-6这七个数字中的一个?即每个数字的概率均为q,q<1/7.我们先从简单的情况开始考虑,假设需要生成0和1,二者概率均为q。那么我们可以让已有的随机数生成器产生两个数字,那么产生的数字及概率是: Number Prob 00 p2p2p^2...
2018-04-23 00:39:13
3044
1
原创 [面试题]机器学习算法工程师面试题
你的Word2Vec应用中用的是Skip-gram还是CBOW?请推导逻辑回归的损失函数?L1与L2的区别是什么?什么是Negative Sampling?
2018-04-19 21:55:21
822
原创 [面试题][统计学]等概率采集样本点
有一个非常非常大的数据集,有正样本,有负样本,仅知道数据集的size,不知道数据的分布,设计算法从中采样出40000个正样本、60000个负样本,使得样本是等概率被采集到的。思路:这可以理解为一个海量数据的问题,可以采用堆排序的方式来处理,而利用hash值来排序则可以获得随机性要求。解法:维护一个大小为40000的小根堆(或者大根堆)、一个大小为60000的小根堆(或者大根堆)。遍...
2018-04-19 20:19:11
1080
原创 算法工程师面试题
决策树如何防止过拟合?剪枝算法 随机森林一般情况下,如何防止过拟合?数据集扩增(Data Augmentation):从数据源头采集更多数据;复制原有数据并加上随机噪声;重采样;根据当前数据集估计数据分布参数,使用该分布产生更多数据等。 正则化方法 提前终止训练(Early stopping) Dropout,只用于深度学习中。 Batch Normalization。...
2018-04-13 22:45:38
953
原创 一张图看懂在北京买房不同贷款方式的差别
以一套总价300w的二手房为例:注:月供、利息等的计算可以通过链家的房贷计算器来帮助计算:https://bj.lianjia.com/tool.html?sub=0
2017-08-31 09:42:31
961
原创 LeetCode[Backtracking]: Letter Combinations of a Phone Number
Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. Inpu
2017-08-28 10:29:06
438
原创 [面试题] 从抽屉找东西的概率学问题
面试题:假如你有4个没有任何区别的抽屉,你每次放东西有60%的概率会放在这四个抽屉里的某一个抽屉,40%的概率放在这四个抽屉以外的其他地方。现在假设你需要找一份文件,你找了前三个抽屉都没有找到,请问这个文件在最后那个抽屉的概率是多少?思路:这个文件最后只有两种可能,一是在最后那个抽屉,一是在抽屉以外的其他地方,所以在最后那个抽屉的概率是:(60% * 25%) / (60% * 25% + 40%)
2017-08-23 20:32:37
1613
原创 [面试题] 用最快的方法找到唯一一个不连续成对出现的字母
面试题:除了某一个字母以外,其他字母都是连续成对出现的,比方说“AABBCCDDEFFGGHH”,用最快的方法找到其中的“E”。思路:最快的方法肯定不是顺序遍历整个字符串,因为那样做的时间复杂度是O(n)。仔细观察这个字符串,实际上是很有规律的,前面正常成对出现的字母存在这样一个规律——偶数下标的字母必然与它的下一个字母相同,后半部分正常出现的字母也存在一个规律——奇数下标的字母必然和它的下一个字母
2017-08-23 20:09:07
863
原创 [面试题] 不用算术运算符实现两个数的加法
思路:将两个数当作二进制数来处理,比方说6(110)+5(101)=11(1011),可以将二进制的加法过程分成两部分来处理:先不考虑进位求得两数的和(即两数按位异或),然后再将产生的和与进位结果(即两数按位与然后左移一位)相加,后面这一相加过程可以递归调用add函数来实现。代码如下:int add(const int a, const int b){ return b == 0 ? a
2017-08-23 16:53:20
647
原创 Python package安装指南
Download whls from http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpypip install numpy-1.13.1+mkl-cp27-cp27m-win_amd64.whlpip install scipy-0.19.1-cp27-cp27m-win_amd64.whlpip install gensim-2.3.0-cp27
2017-08-02 20:26:04
763
原创 Python 多进程
import sysimport osimport timeimport multiprocessingdef ProcessFunction(job): print jobdef RunWithMultiprocessing(inputJobs): multiprocessing.freeze_support() pool = multiprocessing.Pool
2017-04-16 22:30:57
370
原创 Python 多线程
import sysimport osimport timeimport threadingimport Queueimport multiprocessingclass WorkerThread(threading.Thread): def __init__(self, jobQueue): threading.Thread.__init__(self)
2017-04-16 22:17:04
398
翻译 Class-Based N-Grams
Class-Based N-grams,又被称为Cluster N-grams,是一种基于词的类别信息或族信息的N-gram变体。它针对训练语料的稀疏性特征可以起到良好的效果。比方说针对一个航班预定系统,我们希望预测“到上海”的bigram概率,但是“到上海”从来没有出现在训练预料中。但是我们的训练语料中有“到北京”、“到长沙”、“到深圳”。如果我们知道它们都是城市,并且假设“上海”在其他上下文语料
2017-03-03 18:40:53
1418
1
原创 Ubuntu使用alias配置命令别名
vim ~/.bashrcadd your alias at the end of this file: alias ~=’cd ~’ alias ..=’cd ..’ alias …=’cd ../..’ alias ….=’cd ../../..’ alias …..=’cd ../../../..’ alias ……=’cd ../../../../..’
2017-02-17 14:15:56
857
原创 Ubuntu上使用ssh
新安装的Ubuntu上自动安装好了openssh-client: 但是并未安装openssh-server: 解决方法: sudo apt-get install openssh-server
2017-02-13 14:25:26
336
原创 在Windows下访问Ubuntu共享文件夹
1. Install samba >sudo apt-get install samba >sudo apt-get install smbclient2. 修改配置文件 >sudo vim /etc/samba/smb.conf在文件末尾添加以下内容: [share] comment = Shared Folder require password path =
2016-12-11 12:25:47
7128
原创 C++学习:去掉字符串的首尾指定字符
template inline StrType BinaryDecisionTree::LeftTrimString(const StrType& strSource, const StrType& strDrop); template inline StrType BinaryDecisionTree::RightTrimString(const StrType& strSource, c
2016-09-10 16:25:26
2845
1
原创 Git命令简明清晰版
分类命令功能说明本地修改git init初始化仓库 git status查看工作区状态 git diff 查看修改内容 git add [-f] 添加修改文件“-f”:强制添加
2016-07-13 09:04:43
469
原创 C++学习:字符串分割函数
C++实现字符串分割有多种方式,个人认为下面这种实现比较科学:void splitString(const std::string &s, const std::string &seperator, std::vector<std::string> &result){ std::string::size_type pos1 = 0, pos2 = s.find(seperator);
2015-12-28 16:17:18
589
原创 Scrapy学习
学习Scrapy不要到网上找这种那种学习资料了,直接从官方文档开始吧(关键是中文的!):http://scrapy-chs.readthedocs.org/zh_CN/latest/intro/overview.html
2015-05-04 16:40:17
1285
原创 Ubuntu在任一路径下打开终端
sudo apt-get install nautilus-open-terminal安装完毕之后即可在任一路径下打开终端了:
2015-05-04 15:54:08
877
原创 判定两个集合是否相同
寻找合适的算法判定两个集合是否相同,要求时间复杂度为O(N),空间复杂度为O(1),集合中的元素有可能是int,也有可能是string等。解决方法:计算着每个集合所有元素的信息指纹(MD5或者SHA1算法),然后累加起来,判定两个和是否相等,若相等则集合相同,否则集合不同。
2015-04-20 18:18:22
3883
原创 统计起始日期之间有多少个2月29日
题目:统计起始日期之间有多少个2月29。#include <iostream>#include <string>using namespace std;class Date{private: int month; int day; int year; static int getMonthFromString(const string &s) {
2015-04-19 23:50:12
1300
原创 面试题:旋转数组
这是搜狐2015年实习生招聘研发岗位笔试的第一道编程题. 题目描述:输入一个数组,将其循环旋转k个位置,要求时间复杂度为O(N),空间复杂度越低越好.以一个例子来说明: 初始数组: 1,2,3,4,5 k=2 首先倒置整个数组:5,4,3,2,1 然后倒置前k个:4,5,3,2,1 然后倒置后面剩下的:4,5,1,2,3 以上得到的结果即为所求.代码实现如下:void revers
2015-04-16 21:17:14
837
原创 解决Ubuntu安装jdk之后的"java/lang/NoClassDefFoundError: java/lang/Object"错误
按照我的这篇博客安装完jdk1.8.0_31之后,报这个错误:解决方法: 将jdk1.8.0_31/lib/ tools.pack 转为 tools.jar 将jdk1.8.0_31/jre/lib/rt.pack 转为 rt.jar具体操作命令如下: >unpack200 tools.pack tools.jar >unpack200 rt.pack rt.jar操作完成
2015-04-16 16:49:33
4525
原创 面试题[后缀数组]: 最长重复子串
题目:给定一个字符串,求出最长重复子串。这个题目可以用后缀数组来解:对后缀数组排好序,这样重复的子串就在相邻的后缀中找就可以了。我的C++代码实现如下:class Solution{public: string LongestRepeatingSubstring(string str) { size_t len = str.size(); vec
2015-03-31 19:26:21
945
原创 printf非常奇怪的参数问题
以下代码在VS2013上可以通过编译,但是运行到最后一行才出错。 char *s1 = "hello"; char *s2 = "world"; printf("%x %x\n", s1, s2); printf("%x %x %x\n", s1, s2); printf("%s %s\n", s1, s2); printf("%s %s %s\n",
2015-03-30 00:14:54
1334
原创 LeetCode[Dynamic Programming]: Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest product. For example, given the array [2,3,-2,4], the contiguous subarray [2,3] has the largest
2015-03-27 17:20:32
715
原创 《Effective C++》学习笔记
在operator=中处理“自我赋值”在operator=最前面需要进行“证同测试”达到“自我赋值”的检验目的:Widget& Widget::operator=(const Widget &rhs){ if (this == &rhs) return *this; delete pb; pb = new Bitmap(*rhs.pb); return *this;
2015-03-27 17:13:22
783
原创 面试题[动态规划]: 最长公共子序列
问题:输入两个字符串,返回最长公共子序列。最长公共子序列问题(Longest Common Subsequence)是经典的动态规划问题,可以通过以下方式来求解较小规模的问题:在找A和B的公共子序列时: 如果有am-1==bn-1,则进一步解决一个子问题,找“a0,a1,…,am-2”和“b0,b1,…,bm-2”的一个最长公共子序列; 如果am-1!=bn-1,则要解决两个子问题: 找出“
2015-03-25 15:19:47
893
原创 研发工程师(C/C++)面试问答题集锦
C++什么是多态?多态可以用来做什么?static关键词起什么作用?new和malloc的区别?C++中有哪几种数据存储区?堆区存放什么?栈区存放什么?什么是栈溢出?哪些情况下比较容易出现栈溢出?“#include”后面跟引号与尖括号的区别?你了解哪些编译器?STLmap和hash_map的内部实现原理?解决哈希冲突有哪些方法?什么情况下适合用map,什么情况下适合用hash_map?哈希表的不稳定
2015-03-24 15:10:41
3379
原创 面试题[数学与概率]: 从数据流中随机选取样本
题目:输入一段int型数据流,输入未完成之前并不知道数据流的长度,要求在O(1)空间复杂度的前提下随机选出一个元素,并保证每一个元素被选中的概率是一样的。我的解法如下:假如输入的数据流依次是10、20、30、40、……收到10时:以概率1选择10; 收到20时:以概率1/2选择10,以概率1/2选择20; 收到30时:以概率2/3选择上一次选到的元素,以概率1/3选择30;...
2015-03-23 20:21:01
1657
原创 面试题[堆排序]: 二维数组的Top(N)
题目:一个二维数组,每一行都是升序排列的,但每一列每一列并不一定是升序排列的,设计算法找出最大的N个数。这类Top(N)算法,很容易想到堆排序,那么建什么堆呢?建多大的堆呢?这个题目有个特点就是矩阵的最后一列是每一行的最大元素,那么整个矩阵的最大元素必然也在最后一列,所以我们可以考虑将最后一列元素建一个大根堆,建好之后,堆顶就是目前最大的元素,pop出最大的元素之后,将该最大元素的所在行的前一个元
2015-03-23 20:10:02
2119
原创 LeetCode[Backtracking]: Subsets
Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For exampl
2015-03-23 15:54:15
1019
原创 归并排序
如果归并排序中待归并的两个相邻序列分别Wi是r[start]~r[mid]和r[mid+1]~r[end],需要将其归并成一个新序列r1[start]~r1[end]:void merge(int r[], int r1[], int start, int mid, int end){ int i = start, j = mid + 1, k = start; while (i
2015-03-09 17:40:30
624
转载 C++学习:单例模式
模式介绍单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但
2015-03-09 11:35:13
529
原创 TopN算法
TopN算法:从已经存在的数组中,找出最大(或最小)的前n个元素。算法(以找最大的n个元素为例): 1. 取出数组的前n个元素,创建长度为n的小根堆; 2. 从n开始循环数组的剩余元素,如果当前元素比小根堆的根节点大,则将当前元素设置成小根堆的根节点,并通过调整让堆保持小根堆; 3. 循环完成后,小根堆中的所有元素就是需要找的最大的n个元素; 4. 根据需要对小根堆中的所有元素继续利用堆排序
2015-03-08 18:13:48
11202
原创 快速排序
本文选择第一个元素作为轴值,从小到达排序。快速排序算法的一趟排序如下:int Partion (int data[], int first, int end) { int i = first, j = end; int privot = data[i]; while (i < j) { while (i < j && data[j] > privot) --j
2015-03-08 16:29:56
703
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人