自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chfe910的专栏

Stay hungry, stay foolish.

  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除