- 博客(29)
- 收藏
- 关注
原创 海量数据处理 - 笔记
主要参考《编程之法-面试和算法心得》一书。 目录:1.STL容器2.散列分治3.多层划分4.MapReduce5.外排序6.位图7.布隆过滤器8.Trie树9.数据库10.倒排索引11.simhash算法 ...
2019-01-18 12:02:56
234
原创 九章算法笔记 - 思路总结
上九章算法课的笔记,之前记在笔记本上,现在扫描出来便于保存,每次面试之前看着这个笔记过一遍,心里有谱一些。目录:二分搜索 Binary search...
2019-01-18 10:49:10
4620
1
原创 合并多个excel文件
经常需要汇总多张excel表格,于是有了下面这个小脚本。import osimport globimport pandas as pd# drop duplications according to parameter 'on'def merge_excel(path, id): all_data = pd.DataFrame() for f in glob.glob(...
2019-01-18 10:18:35
1193
原创 virtualenv - 创建隔离的python运行环境
笔记本安装了不同版本的多个python环境,之前常用的是python3,但是最近需要在python2.7下写代码,在安装各种包时,无论用pip还是pip3都会默认安装在python3.6下,更改默认的python环境之后也没解决。然后就发现了virtualenv,真的好用。Motivation解决不同应用需要拥有各自不同的独立的python开发环境的问题。virtualenv为应用提供隔离的p...
2019-01-17 11:01:42
287
原创 ch8 - Heap堆
支持的操作:O(logn) Add / O(logn) Remove / O(1) Min or Max (n是堆中的元素的个数)Min Heap/ Max Heap(不能同时求最大和最小)目录:1.基础知识 - 取最大/小值,插入,删除2.Heap的基本原理和具体实现2.1 基本原理2.2 具体实现2.3 基本操作 - Heapify3.相关题目3.1 ugly-...
2019-01-17 10:16:13
237
原创 ch8 - Hash哈希表
支持的操作:O(1)的插入,O(1)的查找,O(1)的删除java中hash table(线程安全,有加锁机制)、hash map(线程不安全)、hash set(只有key,没有value)的区别目录:1.hash function - (常用hash函数、open hash解决冲突需要掌握)1.2 hash-function (128 in lintcode)1.3 strs...
2019-01-17 10:16:07
192
原创 ch8 - Data Structure 数据结构
线性数据结构 - Queue、Stack、Hash树型数据结构 - Heap / Priority Queue、TreeMapBFS的主要数据结构是 QueueDFS的主要数据结构是 Stack目录:什么是数据结构1.1 分类1.2 什么是数据结构?队列 Queue2.1 基础知识2.2 相关题目 - BFS相关的题目栈 Stack3.1 ...
2019-01-17 10:15:59
164
原创 ch7 - 数组 quick select
目录:1. quick select2. kth-smallest-numbers-in-unsorted-array - 第k小的数 (401 in lintcode)3. kth-largest-element 第k大的数( 5 in lincode)4. median - 中位数 ( 80 in lincode)1. quick select(604 in lintcod...
2019-01-17 10:15:51
203
原创 线段树
目录:1.quick sort 和 merge sort 的比较2.quick sort3.merge sort1. quick sort 和 merge sort 的区别于联系1). 时间复杂度:都是构建线段树:/** * Definition of SegmentTreeNode: * class SegmentTreeNode { * public: * i...
2019-01-17 10:15:43
111
原创 策略
二分法的适用条件:时间复杂度是 O(logn)时间复杂度是O(n!)的是:全排列**时间复杂度是O(2^n):**和组合有关系,和01串的组合类似,在每个位置,选左边是0,选右边是1。一定会走到第n层才会结束,每层都是向左走,向右走,所以是有两种选择计算递归的时间复杂度:方法1: 树状图,看有多少个点,每个点被调用多少次,每个点上面的处理的时间复杂度: 有多少个点 * 每个点被看的次数 ...
2019-01-17 10:15:34
180
原创 背包问题
背包问题有三种:1. 01背包: 每件物品只能放一次2. 完全背包:每种物品可以放无限多次3. 多重背包:每件物品可以放有限次数01背包1)问题描述:**有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?(一个物品选一次)(2)递推关系式:j<w(i): V(i,j)=V(i-1,j)j>=w(i): V(i,j)...
2019-01-17 10:15:25
287
原创 leetcode-高频题题解
1. Two Sumhashmap的2-sum模板class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; if(nums.size()==0){ retur
2019-01-17 10:15:17
1603
原创 ch7 - 双指针Two Pointers
双指针的题目分为以下几类:同向双指针相向双指针Two Sum - 几乎所有Two Sum的变种Partition - Quick Select (★★★★★)- 分成两部分- 分成三部分一些你没听过的(但是面试会考的)排序算法目录:1.同向双指针 - Windows Sum(604 in lintcode)2.同向双指针 - Move Zeroes (539 in li...
2019-01-17 10:14:58
415
原创 Quick Sort & Merge Sort
两种排序均采用分治的思想:quick sort先整体有序,再局部有序。归并排序先局部有序,再整体有序。目录:quick sort 和 merge sort 的比较quick sortmerge sort1. quick sort 和 merge sort 的区别于联系1). 时间复杂度:都是O(nlogn),但是快速排序是平均O(nlogn),归并排序是最好最坏都是O(nlogn)...
2019-01-16 20:29:12
527
原创 ch6 - 数组 Array
**数组大部分的题目是偏算法的,这部分主要讲以下两类数组问题:Sorted Array - 排序数组Subarray - 子数组**目录:Merge Two Sorted Arrays(6 in lintcode)(★★★★★)Median of Two Sorted Arrays(65 in lintcode)(比较难★★★★★) quick selectMaximum ...
2019-01-16 18:15:29
282
原创 ch6 - 链表Linked List
链表大部分是偏实践的,偏算法的很少。目录:链表基础知识Reverse Nodes in k-Group (450 in linkcode)Copy List with Random Pointer (105 in linkcode)Linked List cycle (102 、103 in linkcode)Sort List (98 in linkcode)(★★★★★)me...
2019-01-16 17:46:56
266
原创 ch9 - 动态规划(下)
目录:面试中常见的动态规划类型坐标型动态规划1.1 题目 - 最小路径和(求最大最小值)1.2 题目 - 不同的路径(统计方案个数)1.3 题目 - 爬楼梯 (统计方案个数、一维坐标上的dp)1.4 题目 - jump game (是否可行、一维坐标上的dp - follow up:求最小值)1.5 题目 - 最长上升子序列 (最大最小值)序列型动态规划2.1 题目 - wor...
2019-01-16 17:14:43
391
转载 Linux终端复用神器-Tmux使用梳理
Tmux常见快捷键详见:https://www.cnblogs.com/kevingrace/p/6496899.html
2019-01-16 16:18:59
114
原创 docker使用
1.Docker概念1.1 什么是dockerdocker是一个轻量级的操作系统虚拟机容器。传统虚拟化方式在硬件层面上实现,docker在操作系统层面上实现虚拟化,直接复用本地主机的操作系统。1.2 docker引擎docker引擎是一个c/s结构的应用,主要组件见下图:Server是一个常驻进程REST API 实现了client和server间的交互协议CLI实现容器和镜像的...
2019-01-16 16:16:06
138
原创 ch9 - 动态规划(上)
目录:一道题理解动态规划 - triangle1.1 遍历的方法 - DFS:traverse1.2 遍历的方法 - DFS:divide conquer1.3 记忆化搜索 - divide conquer + Memorization1.4 动态规划 - 自顶向下、自底向上记忆化搜索的本质:动态规划什么情况下使用动态规划? 什么情况下不使用动态规划?动态规划的四要素 v...
2019-01-16 15:42:41
428
原创 ch2 - 二分搜索 Binary Search
待做:1.各大公司出现的二分搜索题目;2.两个知识点小视频;3.lintcode上相关题目;二分查找的模板:http://www.lintcode.com/zh-cn/problem/first-position-of-target/#include <vector>using namespace std; class Solution {public: /...
2019-01-16 15:17:13
140
原创 ch1-Intro to Algorithm Interview & Coding Style / strStr / subSets
待做:1.复习lintcode相关的题目-3道;2.看知识点小视频-两个;3.做课后题
2019-01-16 15:15:46
132
原创 linux常用命令积累
统计文件中的行数 - wc语法:wc [选项] 文件该命令各选项含义如下: - c 统计字节数。 - l 统计行数。 - w 统计字数。举例:wc -l train_ec_suning.csv切分文件 - split语 法:split [–help][–version][-<行数>][-b <字节>][-C <字节>][-l <行...
2019-01-16 15:04:07
110
原创 java基础知识
1. java和c/c++的异同相同点:都是面向对象语言,都使用面向对象思想。不同点:(1).java是解释型语言,先编译成字节码,由jvm解释执行。 c++是编译型语言,编译链接后生成可执行的二进制代码。所以,java比c++慢,但java可以跨平台执行。(2).java纯面向对象语言,所有代码必须在类中实现,java语言不存在全局变量或全局函数。c++兼具面向过程和面向对象的特点,可...
2018-10-30 08:41:15
146
原创 软件工程-需求分析
需求分析中,需要确定以下几方面的可行性:经济:成本收益分析,短期长远利益分析;技术:是否能在规定时间内完成;软件的质量如何,如时延等;社会环境:市场和政策人:是否有靠谱的人,人员如何分工,人物和人才...
2018-10-29 21:07:40
260
转载 Java语言的特点
Sun公司:“Java是一种具有 简单、面向对象、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行 等特点的语言”简单:简单而高效,Java系统(编译器和解释器)所占空间不到250KB。面向对象:是纯面向对象的语言。平台无关性与可移植性:可以在不同操作系统上运行,不同操作系统的解释执行字节码文件。它既是编译型也是解释型语言。稳定性和安全性:摒弃了C++中的不安全...
2018-10-29 21:03:09
337
原创 c++ 构造函数
1. 默认构造函数如果类没有构造函数,则编译器自动产生一个默认构造函数;可以给类定义默认构造函数,即定义一个没有参数的构造函数;如果类有参数非空的构造函数,则该类没有默认构造函数。如果没有默认构造函数,则定义该类的数组会报错,如:C example[3];2. 类成员构造函数和析构函数的顺序构造函数:按基类到类自身构造函数的顺序析构函数:相反。3. 创建对象创建对象必须同时创建父...
2018-10-29 20:44:10
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人