- 博客(112)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 微软开源项目推荐: NeuronBlocks - 像搭积木一样搭建自然语言理解深度学习网络
NeuronBlocks - NLP DNN Toolkit https://github.com/Microsoft/NeuronBlocksOverviewNeuronBlocks is a NLP deep learning modeling toolkit that helps engineers to build end-to-end pipelines for neural net...
2019-04-25 21:39:33
585
原创 T(n) = T(n/2) + O(n)
先通过一个简单的例子,T(n) = T(n/2) + O(n), 那么T(n)应该的等于多少呢? 1. 给个直观的例子: 自从看到 An apple a day, keep doctors away, 这句谚语,每天我都会吃苹果。 但我吃苹果的方式很特殊,先吃半个,再吃剩下的半个的一半,再吃剩下的半个的一半。。。。 结论: 我永远都吃不完这一个苹果。 其实这个例子就给出了T(n)的上界是
2015-02-14 23:08:00
6715
1
原创 算法----bonus dumplings
题目描述过年了,妈妈做了100只饺子,其中有10只饺子里面有1块的硬币。小明依次吃这100只饺子,如果小明连续吃到k个硬币,那么小明得到k-1个硬币。e.g. 110111表示6只饺子,1表示有硬币,0表示没有。11表示连续吃到2个饺子,那么小明得1个硬币;111连续迟到3个,小明得2个硬币;故,小明共得到3个硬币。问小明得到的硬币的期望值是多少?分析
2014-12-28 20:02:22
1272
原创 2015找工作总结
写给哪些明年需要找 IT 相关工作,或者现在正在找工作的同学们。。。。 特别是那些觉得自己项目经验不足,或者觉得自己方向太偏的孩子们(可以跟我比一比). 从去年11月份到现在,差不多折腾了一年。真想说,终于可以歇会了。唉,找工作真是件体力活。关于我研三学生,明年毕业。本科: 专业叫理科基地班,说白了就是做物理的。本科的时候因为一门课,自学了编程,从此爱上了写程序。研究生:专业是计算
2014-12-08 20:58:34
2130
2
原创 Shell编程<1>---控制语句
最近在看 Linux 程序设计,准备写成一个系列。把每天学到的记录下来。 以实际的例子为主。一、条件语句if 语句语法#用法 1 if condition1then statementelif condition2then statementfi#用法 2 if condition1; then statementelif condition2; then stat
2014-12-08 20:53:55
977
原创 Python 之 decorator 装饰器
python 在语法上对装饰模式进行了支持。一、问题有如下的一个函数,def sum(x, y): print "x+y:", x+y我们需要在每次调用 sum 函数的时候打印日志,但是我们并不希望修改sum函数。二、解决方案Solution 1:最 brute-force 的方法,定义一个包裹函数, 在这个包裹函数的内部调用sum 函数(包裹函数和
2014-12-07 19:11:07
2366
原创 浅谈C++的this指针
一个关于C++很坑的问题,能够对this指针能够有更好的认识代码1234567891011121314151617181920class A {public: A(int x=0): a(x) {} void print() { cout "print ok" } void print_int() {
2014-12-07 16:26:19
1350
原创 用hexo在gitcafe上搭个人博客
本文介绍如何用 hexo 快速地在 gitcafe 上搭自己的个人博客。环境准备安装 Node.js安装 git安装 Hexo:1$ sudo npm install -g hexoHexo 官网: Hexo本地建博客1234hexo init blog #博客目录是 blogc
2014-12-07 16:21:21
1995
原创 博客新站点 ljshou.gitcafe.io
在 Github 和 Gitcafe 上用 octopress 搭了博客。以后的博客都会放在 ljshou.gitcafe.com
2014-10-21 09:56:03
1240
2
翻译 Python, Java, C++, Perl 面向对象思想比较
面对对象语言的设计哲学通常分为以下两种。第一种思路是基类的作者定下一系列的规则,规定使用该基类的人(派生类的作者)可以干什么事,不能干什么事。C++,和 Java 就是这一阵营的主要代表。比如说,C++中类定义中的 public, protected, private, virtual 等关键字就是所谓的规则,规定了类的用户可以使用的成员,必须继承接口,或者实现等等。这
2014-07-26 21:18:11
2564
转载 《转》解决 Stack Overflow
转 解决Stack Overflow前言程序员最痛苦的事莫过于深陷于BUG的泥潭,我也没少在这上面摔跤。这里,我把自己的一些经验教训总结出来,涉及的内容包括死循环、死锁、内存泄漏以及内存访问错误等,如果能对朋友们有所帮助,那就再好不过了。不过,我不打算按照循序渐进的方式来撰写这些文章,而是想到哪写到哪,也许到最后才会形成一个完整的系列。本节将以一个真实例子讲述如何在VC
2014-07-22 14:32:08
1629
原创 尺取法
问题方法的思想The idea is to check elements in a way that’s reminiscent of movements of a caterpillar.The caterpillar crawls through the array. We remember the front and back positions of thecaterp
2014-07-17 15:57:50
1769
原创 Vim ---- 简单好用的 vim 配置文件,不用插件
set hlsearchset backspace=2set rulerset showmodeset nuset bg=darksyntax onset shiftwidth=2set tabstop=4set softtabstop=2set expandtabset autoindentset smartindent
2014-07-10 10:38:48
1699
原创 Wildcard matching
Implement wildcard pattern matching with support for '?' and '*'.'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover t
2014-07-09 22:12:42
1140
原创 数据结构 《22》---- 二叉树三种遍历的迭代器算法
二叉树的三种遍历有递归版本,和迭代版本。本文介绍一种新的思路。参考了 http://coolshell.cn/articles/9886.html在许多应用中,我们还需要对遍历本身进行抽象。假如有一个求和的函数sum,我们希望它能应用于链表,数组,二叉树等等不同的数据结构。这时,我们可以抽象出迭代器(Iterator)的概念,通过迭代器把算法和数据结构解耦了,使得通用算法能应用于不同类
2014-07-07 15:59:09
3477
原创 operator=处理自我赋值
有许多时候,我们自己编写类的operator=函数(例如,当类中包含指针时)。考虑如下的一个类:class Widget {public: Widget(int x=0): val(new int(x)) {} ~Widget() { delete val; } Widget(const Widget &rhs): val(new int(*rhs.val)) {} //
2014-07-01 20:52:18
1633
原创 以独立语句将 newed 对象放入智能指针
如下的代码,虽然使用了智能指针 shared_ptr , 但是还是可能泄漏资源。processWidget(shared_ptr(new Widget), priority());上述函数有两个参数,第一个是 shared_ptr, 第二个是纯粹是 priority()函数的调用。调用时,编译器必须创建代码,包括如下三件事情:调用 priority执行 new Widg
2014-07-01 20:40:14
1033
原创 如何禁止C++ 类支持拷贝
如何禁止C++ 类支持拷贝C++ 编译器默默地为你做了不少工作当你写下class Empty {};//其实等价于class Empty {public: Empty() { ... } //default constructor Empty(const Empty &rhs) { ... } //copy constructor ~Empty() { ...
2014-06-30 13:17:12
4580
5
原创 绝不在构造和析构函数中调用 virtual 函数
看下面的这段代码,问 print调用的是基类还是派生类的版本?/** * @file virtual-constructor.cc * @brief * @author L.J.SHOU shoulinjun@126.com * @version 0.1.00 * @date 2014-06-28 */#include using namespace st
2014-06-29 10:35:19
2063
3
原创 vim ---- 一键自动indent的命令
当用vim拷贝某一段代码到另一个程序的时候,往往indent会有一些问题。。下面这个强大的命令能够让你一键让代码有很好的格式。gg=G例子:
2014-06-17 16:56:59
1883
原创 数据结构《21》----2014 WAP 初试题----Immutable queue
用上一篇文章的immutable stack 来实现 immutable queue.其实就是用两个栈实现队列,就//copyrigt @ L.J.SHOU May.25, 2014#include using namespace std;/** * This class is a functional datatype, representing * a
2014-06-17 15:08:55
2083
原创 数据结构《20》----Immutable stack
有趣的函数式数据结构《一》----不可变栈什么是不可变?往栈中插入一个元素,原来的栈保持不变,返回一个新的栈(已插入新的元素)。push, pop,getMax 等操作都要求在 常数时间内完成。可能读者会产生疑惑,既然要返回一个新的栈,是不是就必须先拷贝一份原来的栈,然后在新的栈中插入元素。但是这样复杂度就是线性的,如何能够在常数时间内完成呢??这里,就是immutab
2014-06-17 14:55:42
1843
原创 C++ Daily 《6》---- 类静态对象与函数静态对象
C++ 的一个哲学基础是,你不应该为你使用的东西付出代价。class 拥有一个 static 成员,即使从未被用到,它也会被构造和析构;而 函数拥有一个 static 成员, 如果这个函数从未被调用,则这个对象不会被构造。做个简单的实验:#include using namespace std;class Printer{ friend Printer& the
2014-05-13 10:50:29
878
1
原创 C++ Daily 《5》----虚函数表的共享问题
问题:包含一个以上虚函数的 class B, 它所定义的 对象是否共用一个虚函数表?分析: 由于含有虚函数,因此对象内存包含了一个指向虚函数表的指针,但是这个指针指向的是同一个虚函数表吗?实验如下:class A{public: virtual void print() { cout << "print A:" << endl;}private: int
2014-05-11 11:21:12
1732
原创 数据结构《19》----String容器的三种实现
一、序言一个简单的string 容器到底是如何实现的?本文给出了 String 的三种从易到难的实现,涉及了 reference counting, copy on write 的技术。二、第一个实现我们设计的string类里面包含一个char* 的指针, 通过指针的管理,来实现string的基本功能。废话不多说了,直接上代码:{CSDN:CODE:
2014-05-10 16:29:21
1457
原创 数学----有趣的扑克牌《一》
问题:一副扑克牌,除去大小王后共52张牌,随机从中抽八张牌,问八张牌的和最有可能是多少?分析:这52张牌,其实就是数字 1 2 3 。。。13, 每个数字出现4次。随机抽出8个数,问组成的和最有可能是多少?聪明的你可能想到了另一个很类似的问题,2 sum: 问一个数组中是否存在两个数的和等于某个给定的值。当然,这里就类似于 8 sum。 但是,题目却问的是,最有
2014-05-08 22:37:17
1396
原创 数据结构 《18》----RMQ 与 LCA 的等价性 (一)
前言 RMQ: 数组 a0, a1, a2,..., an-1, 中求任意区间 a[i+1], a[i+2], ..., a[i+k] 的最小值 LCA: 求二叉树中两个节点的最低公共祖先 本文将证明这两个问题可以相互归约为另一个问题。证明 先通过一个简单的例子来说明问题。见下图: 求 [7 2 8 6] 的最小值
2014-05-01 00:22:04
1586
原创 数据结构《17》---- 自动补齐之《二》----Ternary Search Tree
一、 序言上一篇文章中,给出了 trie 树的一个实现。可以看到,trie 树有一个巨大的弊病,内存占用过大。本文给出另一种数据结构来解决上述问题---- Ternary Search Tree (三叉树)二、数据结构定义Trie 树中每个节点包含了 26 个指针,但有很大一部分的指针是 NULL 指针,因此浪费了大量的资源。一种改进措施就是,以一棵树来代替上述的指针数组。
2014-04-29 23:23:10
1889
原创 C++ Daily 《4》----一个简单的 int to string 的方法
经常会在项目中用到 int to string#include #include #include using namespace std;int main(void){ ostringstream num; num << 123; string str = num.str(); cout << str << endl; return 0;}
2014-04-29 16:31:04
1239
2
原创 C++ Daily 《3》----构造函数可否是虚函数
C++ 中构造函数可否是虚函数?绝不要!!而且,在构造函数中调用虚函数也是不提倡的行为,因为会引发预想不到的结果。因为,在 derived class 对象构造的过程中,首先调用的是基类的构造函数,等基类构造结束,才开始构造派生类的部分。这个过程中,编译器将该对象视为 基类,而非派生类(因为,派生类对象的专属部分还未初始化!!!)所以,如果在构造函数中调
2014-04-28 22:15:18
1092
原创 C++ Daily《2》----vector容器的resize 与 reserve的区别
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么?1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size.2. vector内部其实包含了三个指针,如下图:resize()------改变 finish 指针reserve()----改变 end_of_storage 指针3
2014-04-26 13:16:27
1397
2
原创 C++ Daily 《1》----关于对象
1. 问题请问如下的一个 class 的一个对象占了多少内存? 具体包含哪些东西? non-static 变量? static member 变量? member function?? virtual function??class A{public: virtual void print();private: int a; static double b;};
2014-04-25 23:06:41
901
原创 数据结构《16》----自动补齐实现《一》----Trie 树
1. 简述Trie 树是一种高效的字符串查找的数据结构。可用于搜索引擎中词频统计,自动补齐等。在一个Trie 树中插入、查找某个单词的时间复杂度是 O(len), len是单词的长度。如果采用平衡二叉树来存储的话,时间复杂度是 O(lgN), N为树中单词的总数。此外,Trie 树还特别擅长 前缀搜索,比方说现在输入法中的自动补齐,输入某个单词的前缀,abs,立刻弹出
2014-04-25 22:47:09
2709
原创 TopCoder----卖柠檬
Problem Statement You are playing a game called Slime Tycoon.You will be selling Slimonades in this game, and your goal is to sell as many as you can.The game will consist of N game
2014-04-22 19:17:59
2742
原创 动手实现自己的 STL 容器《2》---- list
1. 序: 本文参考了侯捷的 《STL 源码分析》一书,出于兴趣,自行实现了简单的 list 容器。 学习了 STL 的 list 容器的源代码,确实能够提高写链表代码的能力。其中的 sort 函数,可谓是非常神奇。。。2. 实现的细节 STL 的 list 容器采用了一个带有尾节点的环状双向链表。 如下图所示:// Last Update:2014
2014-04-20 21:47:53
1286
原创 C++ Primer----智能指针类 2
指针带给了 C++巨大的灵活性,然而同样也带来无数的问题,悬挂指针,内存泄漏等。int *pInt = new int(1);// Do not forgetdelete pInt;智能指针就是一种能够有效避免悬挂指针的方法。通过一个类,来管理指针的复制,delete 等。从而使用户可以放心地使用指针。一种智能指针的实现方法是,通过一个计数,追踪当前指向同一块地址的指
2014-04-14 21:30:30
1154
原创 动手实现自己的 STL 容器 《1》---- vector
本文参考了侯捷的 《STL 源码分析》一书,出于兴趣,自行实现了简单的 vector 容器。之后会陆续上传 list, deque 等容器的代码,若有错误,欢迎留言指出。vector 容易实现的几点注意事项:1. 由于vector 是动态数组。出于效率的考虑,在往vector 中加入元素时,内存的扩展遵循的规则是: 1> 如果当前可用内存不够,开 2倍大的内存,将原
2014-04-11 15:58:11
3219
原创 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.Input:Digit string
2014-04-02 16:05:20
941
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人