自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 【算法】用固定数组实现FIFO buffer

果然,死的很惨啊,哈哈哈。【问题】用固定长度的数组实现FIFO buffer,写个lib库。(毛线是lib库?)事后重新写了一遍,估计还是有问题,但肯定比googleDoc上那个要完善的多。代码如下:bool bufferIsFull = false;bool bufferIsEmpty = false;templateclass CFifoBuffer {public:

2014-01-15 20:09:35 783

原创 【算法】快排算法实现

十一签了企鹅后就开始优哉游哉的过生活了,闲暇的时候做做语义分割的实验,平时都在玩,没想到还有一个Google的面试在回家的档口伏击我,目前的我一问三不知,今天试了一下快排,调了很久才正确,明天的面试我完了。【算法】代码如下#include "stdafx.h"#includeusing namespace std;int Partition(int *array, int begi

2014-01-13 18:51:37 551

转载 【算法】等概率问题汇总

【题目一】已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。思路:可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然后调用k(k为整数n的二进制表示的位数)次Rand()函数,得到一个长度为k的0和1序列,以此序列所形成的整数即为1--n之间的数字。注

2014-01-13 13:38:45 1429

转载 MLE and MAP

==小记==又改我的课题,我对老雷已经无力吐槽了,既然签了工作,下面的时间就专心研究课题好了。要开始痛苦的钻研PGM的生涯了。==正文==原文出处:http://blog.csdn.net/upon_the_yun/article/details/8915283最大似然估计最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。简单而言,假设我们

2013-11-04 10:06:01 951

原创 好糖果坏糖果

==小记==微策略的一二面是全英文的,两位很和善的美眉陪我熬了一个小时,我这坑坑巴巴的英文水平,真的辛苦他们了。。。英语差也就算了,问题是我的智商和反映也相当low,看来需要重新修炼了,一点一滴的累计吧。随时摘录一些智力题,至于英语么,周末去英语角吧╮(╯▽╰)╭【问题】有十个不知重量罐子,每个罐子装着500个糖果,糖果如果是好的就重1g,如果坏了重0.9g,一罐糖果要么全好,要么全坏

2013-10-26 19:20:21 687

原创 【链表1】有关链表环的各种问题

==小记==以前只研究过如何判断一个链表是否有环,结果百度三面的时候SB了,因为关链表环有各种各样的问题【问题1】如何判断一个链表是否有环【问题2】如何选择两个指针的步长【问题3】链表环的起点在哪

2013-10-21 10:21:27 797

原创 【数字题1】股票的最大收益

【问题】

2013-10-20 09:00:11 1041

原创 【字符串1】atoi的实现

【思路】函数功能很简单,但是要考虑各种特殊条件,下面是一组输入和预期输出【链接】http://blog.csdn.net/v_july_v/article/details/9024123int StrToDecInt(const char* str) { static const int MAX = (int)((unsigned)~0 >> 1

2013-10-13 10:37:02 692

原创 【数字题2】求一个数组的全部子集

【问题描述】{},{a}, {b}, {c}, {d},{a, b}, {a, c}, {a, d}, {b, c}, {b, d}, {c, d},{a, b, c}, {a, b, d}, {a, c, d}, {b, c, d},{a, b, c, d}一共16个,事实上n个元素的集合的子集共有2n个(包含空集)。【方法一】递归定义一个元素数组ma

2013-10-09 21:21:46 937

原创 内存管理

本节为《操作系统精髓与设计原理》第7章的读书笔记,介绍四种分区方式:固定分区、动态分区、简单分页、简单分段。前两种在历史上存在过,后两种技术没有实际使用,讨论他们是位后面的虚拟内存作准备。

2013-10-06 15:39:33 625

转载 【专题1】僵尸进程的产生和避免

==什么是僵尸进程==在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill-9也不能杀死僵尸进程。==怎样产生僵尸进程==一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正

2013-10-05 14:51:02 748

原创 UNIX线程

一、进程原语与线程原语的区别线程包括的内容有:线程ID、寄存器、栈、调度优先级、信号屏蔽字、errno、线程私有数据。线程共享的进程数据有:程序文本、程序全局内存和堆内存、栈、文件描述符。==pthread_create==#include int pthread_create(pthread_t *restrict tidp, const pthread_attr_t

2013-10-03 23:26:58 816

原创 UNIX进程控制

一、关于IO缓冲标准I/O提供了三种类型的缓冲:==全缓冲==这种情况下,在填满标准I/O缓冲区后才进行实际I/O操作。对于驻留在磁盘上的文件通常是由标准I/O库实施全缓冲。一个流上执行第一次I/O操作时,相关标准I/O函数通常调用malloc获得需使用的缓冲区。术语冲洗说明I/O缓冲区的写操作。缓冲区可由标准I/O例程自动冲洗,或者可以调用函数fflush冲洗一个流。值得引起

2013-10-02 13:46:29 629

原创 UNIX进程环境

一、C程序的内存布局首先看下面这个图,有个大致的概念:每一个C程序都有自己独立的地址空间,它们包含五个部分:1. 代码段(Text segment)存放程序的执行代码,即使在多进程的环境下,它也只有一份。2. 初始化数据段(Initialized data segment)例如初始化的全局变量[cpp] view plaincop

2013-10-02 10:56:32 700

原创 【算法】楼层扔鸡蛋问题

原文:http://www.cnblogs.com/ltang/archive/2010/11/23/1885791.html==有限层数和蛋数,求即使最坏情况下需要的最少判断次数==两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。(参见[两个鸡蛋--一道G

2013-09-18 19:47:50 3055

原创 【二叉树13】将有序链表编程一颗BST

【问题】给你一个链表的头结点head,该链表元素递增排序,将这个链表转化为一个二叉搜索树,并返回树的根节点【code】 int linkLength(ListNode *head) { int length = 0; while (head != NULL){ head = head->next; l

2013-09-13 17:26:21 784

原创 【二叉树12】求一颗二叉树中两个节点的最近公共父节点

【问题】lowest common ancentor【举例】8和5的公共父节点为3【code】Node *LCA(Node *root, Node *p, Node *q) { if (!root) return NULL; if (root == p || root == q) return root; Node *L = LCA(root->left, p,

2013-09-12 14:56:34 649

原创 【二叉树11】判断一颗二叉树本身是否为镜像

【问题】如题目output : trueoutput : false【code】bool isSymmetricHelper(TreeNode *rnode, TreeNode *lnode) { if ((lnode || rnode) == NULL) return true; if ((lnode && rnod

2013-09-11 11:59:07 876

原创 【二叉树10】求一颗二叉树的最小深度

【问题】如题目【code】int minDepthHelper(TreeNode *root, int curDepth, int &minDepth) { if (root->left == NULL && root->right == NULL) { minDepth = minDepth < curDepth ? minDepth : curDep

2013-09-11 10:33:06 1079

原创 【二叉树9】二叉树中任意两个节点的最大路径和

【问题】注意任意两个节点,不是只叶子到叶子,或者是跟到叶子。特殊考虑节点值为负数的情况。【code】在leetcode上的第一道题,bug了三次才通过。函数maxNode返回节点的最大值,作为sum的初始值。函数maxHandSum返回讲当前节点当做根节点,得到的最大和,特别注意最后一个if语句,对具有负贡献的子树进行剪枝。有以下几点要注意的:1、单独一个节点的树-3,没过

2013-09-09 22:35:00 1148 2

原创 【二叉树8】判断一颗树是否是平衡二叉树

【问题】提供一颗二叉树,判断是否为平和二叉树【代码】GetDepth()用来获取一个节点的深度,当一个节点的左右孩子的深度之差不超过1,就认为这是个平衡二叉树int GetDepth(BTreeNode* root) { if(root == NULL) return 0; int leftDepth = GetDepth(root->leftchild);

2013-09-09 17:44:35 746

原创 【二叉树7】递归计算二叉树中节点数目

【问题1】计算二叉树中叶子节点的数目int countLeafNodes(BTreeNode *root) { if (root == NULL) return 0; if (root->leftchild == NULL && root->rightchild == NULL) return 1; return countLeafNod

2013-09-09 16:00:55 1108

原创 【二叉树6】寻找二叉树中任意节点最远的距离

【问题】距离定义为两个节点中间的节点数目,也就是从一个节点到另一个节点所经过的节点数目(包括自身)。对与一个节点而言有三种情况可以考虑:1、左子树的高+右子树的高+1得到经过当前节点的最大path2、左子树为根节点得到的最大path3、右子树为根节点得到的最大path求max(1,2,3)【代码】int findMaxPath(BTreeNode *root, in

2013-09-09 15:43:57 951

原创 【二叉树5】前中后遍历二叉树的递归和非递归方法

http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html

2013-09-09 12:15:23 615

原创 【算法】统计qq一天中每秒在线人数

【问题】为了统计一天内QQ每秒的在线用户数量,每次一个用户下线时会生成一条记录到文件里:记录里有三个字段(上线时间,下线时间,用户名),时间以秒为单位。现在有一个文件包含了当天生成的N条记录(N很大),请设计一个算法根据N条记录统计出当天每秒在线用户的数量。(0【思路】创建一个数组change[ 24*3600 ]用来记录一天中,每秒用户的变化情况,在第i秒上线一人change[ i ]++,

2013-09-06 13:53:53 9887 5

原创 【二叉树4】比较两个二叉树的结构是否相同

【问题】给两棵二叉树的根节点,判断他们的结构是否相同。bool IsSameStruct(treeNode *node1,treeNode *node2){ if (node1 || node2 == NULL) return ture; else  if(node1 && node2 == NULL) return false; else return IsSameStruc

2013-08-17 17:27:19 812

转载 【UNUX】进程与线程

简介    在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程。但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行。因此线程被引入操作系统。 为什么需要线程?    如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程。这些进程中包含的其它迷你进程就是线程。    线程之所以说是迷你进程,是因为线程和进程

2013-06-04 23:21:39 591

转载 【C++】STL的sort

STL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改用Heap Sort。本文先分别介绍这个三个Sort,再整合分析STL sort算法(以上三种算法的综合) -- Introspective Sorting(内省式排序

2013-06-04 22:45:09 699

转载 【C++】STL的hash_map

什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最傻的方法就

2013-06-04 21:46:26 596

原创 【算法】各大牛在po上网的算法题

经常在各种论坛上看到大牛们认真写自己的面经,没经历过那马多面试,只能向他们学习了,算法都记录下面,只是想了想,这几天实验室太忙,有时间一定要亲自实现出来!【hulu面试】http://bbs.byr.cn/#!article/ParttimeJob/3147861、给出一个整数序列,判断他是否是二叉排序数的后续遍历。(不要利用额外空间,考虑O(nlgn)和O(n)的时间复杂度)

2013-06-02 14:58:32 1562

转载 【UNIX】./a.out > outfile 2>&1和./a.out 2>&1 > outfile的区别

【APUE习题 3.5】./a.out > outfile 2>&1和./a.out 2>&1 > outfile的区别    int main()     {       printf("output to stdio\n");       fprintf(stderr,"output to stderr\n");       return 1;     }

2013-05-31 20:18:32 1893

转载 【UNIX】实际用户ID,有效用户ID,保存的设置用户ID

Linux中的实际用户ID,有效用户ID和保存的设置用户ID一般是对于进程而言的,具体概念如下:实际用户ID(real user-id):标明进程的执行者是谁。有效用户ID(effective user-id):标明进程执行时对文件的访问权限保存的设置用户ID(saved set-user-id):这个概念涉及到可执行程序文件的设置用户ID位,如下图所示当可

2013-05-29 21:04:44 577

转载 【UNIX】僵尸进程的处理

什么是僵尸进程  僵尸进程是指它的父进程已经退出(父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是(zombie)进程。  僵尸进程是怎么样产生  一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是使进程退出,但也仅仅限于将

2013-05-29 20:04:21 1094

转载 【C++】C++的三种new

一、plain new 普通newCpp代码  "font-size: medium;">void*operator new(std::size_t)throw(std::bad_alloc);   void operator delete( void *) throw();       该运算符在分配失败时将抛出异常,而非返回NULL。使用时要包含

2013-05-29 15:29:29 614

原创 【面试】网络基础

OSI七层模型应用层:提供网络应用协议表示层:为用户提供数据转换和表示服务会话层:为用户提供会话控制服务(安全认证)传输层:为用户提供端到端的数据传输服务网络层:控制通信子网原点到目的点的数据传输(Packet)数据链路层:在有差错的物理线路上提供无差错的数据传输(Frame)物理层:在物理线路上传输原始的二进制数据位 TCP/IP 五层模型应用层:同OSI

2013-05-28 09:22:03 785

原创 【数字题3】最大重叠子区间

问题描述对一个正整数n,如果n在数据文件中某行的两个正整数(假设为A和B)之间,即A=n>=B,则n属于该行;如果n同时属于行i和j,则i和j有重叠区间;重叠区间的大小是同时属于行i和j的整数个数。例如,行(10 20)和(12 25)的重叠区间为[12 20],其大小为9;行(20 10)和(12 8)的重叠区间为[10 12],其大小为3;行(20 10)和(20 30)的重叠区间大小

2013-05-13 20:32:40 1713

转载 【设计模式】六大原则

1.  单一职责原则(Single Responsibility Principle)http://blog.csdn.net/zhengzhb/article/details/72781742.  里氏替换原则(Liskov Substitution Principle)http://blog.csdn.net/zhengzhb/article/details/72818

2013-05-11 16:36:21 538

转载 【设计模式】简单工程模式和策略模式的区别

策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。简单工厂严格意义上不是一种设计模式,只能是一种良好的编程习惯。名词理解:工厂(Factory)模式我们可以做如下理解,假设有一个Audi的公司生产汽车(似乎也不用假设了),它掌握一项核心的技术就是生产汽

2013-05-11 10:16:33 1343

转载 【gcc编译器经历的4个步骤】

一个c语言程序从源文件到生成可执行文件,编译器需要共经历4个步骤:1) 预处理:把c文件中预处理命令扫描处理完毕,即对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析,此时生成的文件仍然是可读的。2) 编译:把预处理后的结果编译成汇编或者目标模块,即生成汇编语言文件,此时生成的文件仍然是可读的汇编文件。3) 汇编:把编译出来的结果汇编成具体CP

2013-04-28 09:30:17 833

转载 【C++】标准C++的类型转换符

C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。 ----------------------------------------------------

2013-04-16 09:54:56 573

空空如也

空空如也

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

TA关注的人

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