自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大海鱼塘

大愚海棠

  • 博客(23)
  • 收藏
  • 关注

原创 linux指定目录下全局替换命令

sed -i "s/OLD_STRING/NEW_STRING/g"  `grep 'OLD_STRING' -rl ./`比如我要把当前目录下所有文件中的'呵呵'替换成'哈哈'sed -i "s/呵呵/哈哈/g"  `grep '呵呵' -rl ./`

2018-06-13 10:51:12 3029

原创 git --mixed --soft --hard之间的区别

git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和add信息git reset --soft:回退到某个版本,只回退了commit的信息。如果还要提交,直接commit即可git reset  --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,慎用!

2017-07-06 11:25:16 7373

原创 thrift的安装以及与http网络性能对比(MAC环境)

因为公司业务的原因,要加速一下rpc,准备使用thrift,所以做个初步的性能比较,之前对这块也不太了解,如果有不对的地方希望老铁们指正~ 因为都是走的TCP,所以性能的差异主要就是数据包的大小对比了。 比较的是thrift和flask,语言都是用的python。thrift测试了json和binary两种格式,flask使用的是json格式。 以上是背景。MAC上thrift的安装就一句话,

2017-06-14 12:46:55 2449

原创 KMP算法 字符串匹配

用kmp算法实现字符串匹配,kmp算法的介绍int strStr(string haystack, string needle) { if (needle.size() == 0) return 0; vector<int> next(needle.size(), 0); for (int i = 2; i < next.siz

2017-05-26 16:50:29 417

原创 堆排序 C++

堆排序的的步骤(从小到大): 1. 先构建最大堆; 2. 维护一个tail,表示堆的底部,即数组中0-tail部分为堆,tail初始为nums.size()-1,tail之后的元素为已排好序的部分; 3. 将堆顶的元素与tail交换,tail减一,然后对堆顶的元素做一次down操作,重复这个步骤,直到tail为0;#include <iostream>#include <algorithm>

2017-05-26 14:17:27 311

原创 归并排序 C++

归并排序也没啥好讲的了,就是二分+merge,留下来以后copy用#include <iostream>#include <algorithm>#include <string>#include <vector>#include <random>using namespace std;void mergeSort(vector<int>& nums, int l, int r){

2017-05-26 10:46:09 557

原创 最长回文子串 manacher算法

求最长回文子串比较有名的一种算法,复杂度是O(n)的,(不要问我为什么是O(n))。思路:尽量利用到之前遍历得到的回文信息。 表示以i为中心,最长的回文子串的半径有多长,并保存当前的回文子串往右延伸,最长能延伸到哪,即p[i]+i的最大值,存为right,其回文子串的中心点存为index。 考虑当下标为i时,要求p[i]。有几种情况: 1. 当i > right时,超出了之前得到的信息的范围,

2017-05-18 21:07:35 301

原创 今日头条2017实习生笔试题解

Prob 1. 找出函数的最宽尖峰题意:求给定数列 A 中先升后降的最长连续子序列,要求 O(n)。思路:左右各做一遍最长上升子串,求最大和即可。#include #include using namespace std;int main(){ int n; cin >> n; vector nums(n, 0); for (int i = 0; i < n;

2017-04-05 15:09:52 848

原创 浅析char*和char c[]

直接看例子#include #include using namespace std;int main(){ char* a = "12345"; char b[] = "12345"; cout << a << endl; //输出12345 cout << b << endl; //输出12345 cout << sizeof(a) << endl; //4,

2017-03-04 11:15:54 837

原创 C++单例模式,懒汉 饿汉

饿汉模式:线程安全懒汉模式:非线程安全#include using namespace std;class Singleton{private: Singleton() {} Singleton(const Singleton&); //禁止访问拷贝构造函数 Singleton& operator = (const Singleton&); //禁止使用操作符= stat

2017-02-28 20:00:13 542

原创 二叉查找树转双向链表

将一个二叉查找树转换成排好序的双向链表,不能创建中间节点,只能调整节点的指向struct HeadTail //head表示子树转换完成之后的链表头, tail表示链表尾{ Node* head; Node* tail; HeadTail() { head = NULL; tail = NULL; }};HeadTail convert(Node* root){ HeadTail result; if (root == NULL)

2017-02-14 13:11:24 281

原创 快速排序 c++

记录一下快排的不同写法,updating...#include #include using namespace std;class Solution {private: void swap(int& a, int &b) { int temp = a; a = b; b = temp; } int partition(vector& nums, int l,

2017-01-12 16:13:34 306

原创 链表与环的三个问题:判断是否有环,求环的长度,求环的起点

1. 判断单链表是否有环两个指针,一个快一个慢,快指针每次都每次走两步,慢指针每次走一步,如果两个指针相遇了,则说明有环,遇到NULL,则说明无环。2. 求单链表中环的长度还是原来的快慢指针,假设他们在p点相遇,相遇之后继续走,下一次相遇的的时候,快指针比慢指针多走的距离正好是环的长度。3. 求单链表中环的起点这个稍微复杂一下,我们假设链表的起点位点h,环的起点

2017-01-11 18:28:53 608

原创 默认拷贝构造函数 浅拷贝 深拷贝 C++

C++提供了默认拷贝构造函数:class C{private: int a;public: C(const C& c) {a = c.a;} }默认的拷贝构造函数是将类中的成员全部复制一遍,但是当类中的成员为指针一类的资源时,拷贝的是指针本身,而资源不会被拷贝,在析构的时候就会多次释放资源。C++提供的默认拷贝函数称为浅拷贝,当需要拷贝类中的资源时,就需要自定义深拷贝。#i

2017-01-06 12:21:29 961 1

原创 Sublime快捷键<码农版>

Sublime一些实用的快捷键整理: Ctrl+M 光标跳至对应的括号 Ctrl+Shift+[ 折叠代码 Ctrl+Shift+] 展开代码 Ctrl+Shift+↑ 与上行互换 Ctrl+Shift+↓ 与下行互换    Ctrl+Enter 光标行后插入行    Ctrl+Shift+Enter 光标行前插入行    Ctrl+L 选择整行(按L继续选择下行)    Ctrl+

2016-11-25 21:08:14 332

原创 约瑟夫环求解O(n)

1. 约瑟夫环问题:有n个人,编号从0到n-1,围成圈,从0开始报数,第m个人出列,然后继续从第m+1个人不断报数、出列,求最后剩下的人是哪个。2. 求解方案一:链表模拟,时间复杂度为O(nm),比较简单,就不赘述了。方案二:考虑n个人0, 1, 2, 3, ..., n-1,从0开始报数到m,所以编号为m-1的人出列。剩下m, m+1, m+2, ..., n-2,

2016-11-25 10:59:55 649

转载 git add .和git add -u和git add -A的区别

git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)

2016-11-21 16:02:10 6178

原创 Add Digits (数根 digital root)

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has on

2016-11-14 14:58:59 400

转载 SkipList 跳跃表

为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。 用跳表吧,跳表是一种随机化的数据结构,目前

2016-11-11 17:09:18 279

转载 LaTex数学符号公式

出处:http://www.mohu.org/info/symbols/symbols.htm常用数学符号的 LaTeX 表示方法(以下内容主要摘自“一份不太简短的 LATEX2e 介绍”)1、指数和下标可以用^和_后加相应字符来实现。比如:2、平方根(square root)的输入命令为:\sqrt,n 次方根相应地为: \sqrt[n]。方根符号的大小由LATE

2016-10-26 17:10:47 1143

原创 Zesto论文笔记:Zesto: A Cycle-Level Simulator for Highly Detailed Microarchitecture Exploration

由两部分组成,一部分是oracle "execute at fetch"功能模拟器,另一部分是详细的时序模拟器。

2016-10-26 14:50:47 923 2

原创 Divide Two Integers题解以及类似题目的总结

Divide Two Integers题解以及类似题目的总结先说这道题29. Divide Two IntegersDivide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.思路很简单,

2016-10-13 11:18:24 504

原创 小顶堆的C++实现

最小堆就一个特性,儿子比老子大,应该算是比较好实现的数据结构,一共就两个操作。插入:插入到树的最后,然后往上升删除:为了实现方便,普遍的做法是用最后一个node替换堆顶,然后把这个node往下降就行了。其他如建树,更新等操作都是这两个操作的组合。代码如下:#include #include using namespace std;class MinHeap{priv

2016-09-28 09:41:56 4633 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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