自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LUCKYOJ

https://github.com/lucky521

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

原创 二叉查找树的原理与实现 Binary Search Tree

二叉查找树是一种特殊的二叉树。其树结点的结构和普通二叉树一样。所不同的是,我们对二叉查找树的建立和修改操作都需要使其始终满足一个条件:对于树中的每个结点X,它的左子树中所有关键字值小于X的关键值,而它的右子树中所有关键字大于X的关键值。    正是这个条件二叉查找树的建立和修改操作和普通二叉树不一样,需要按照一定的规则。这一规则赋予二叉查找树一些性质。二叉查找树具有的性质:1、二叉查找

2013-10-31 19:27:50 1622

原创 交换单链表中相邻的两个元素 Swap Nodes in Pairs

题目源自于leetcode。题目:Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use onl

2013-10-30 20:39:59 3803

原创 合并k个有序链表 Merge k Sorted Lists

题目源自于leetcode。题目:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.解法:很直观的一个思路。每次在每个有序链表中寻找的表头寻找最小的一个,将其链到新链表上。复杂度:空间复杂度为O(1)。时间复杂度为O(k*n),k为有序链表的

2013-10-30 20:06:14 1562

原创 扔骰子的一道概率题

题目:一个骰子,6面,1个面是 1, 2个面是2, 3个面是3, 问平均掷多少次能使1,2,3都至少出现一次?思路:对于一次实验,1的概率是1/6, 2的概率是1/3, 3的概率是1/2。我的方法:把它独立的当做是三个过程。几何分布的期望EX=1/p,方差DX=(1-p)/p^2。第一轮是必然事件,“第一次出现X值”(显然第一回扔骰子就会出现一个X)

2013-10-30 09:56:38 6608 1

原创 Linux的内存管理机制-概述

内存管理分为两个方面,一个是单个用户进程怎么布局和使用内存空间,这里的内存空间一般是虚拟内存;一个是操作系统内核如何管理内存,这里指的是真实的物理内存。前者是程序员可以考虑的,后者是对程序员彻底透明的,但是我们为了学习操作系统的原理,两个方面都需要理解。    本文只是理论概述,细节上还相当复杂。Linux的虚拟内存管理技术:    对于32位操作系统,每个进程有4G的进程地址

2013-10-29 21:59:26 1508

原创 正斜杠与反斜杠

正斜杠与反斜杠,这两个符号,我总是傻傻分不清除。时常会用错,因此今天我要总结一下,防止以后再跌倒。形状区分:    假设一个汉字“八”,正斜杠是左边,反斜杠是右边。使用区分:正斜杠的用武之地:1、除法运算 2/32、Unix操作系统中的路径 /root/etc/3、Web的URL中 http://4、代码注释 //反斜杠的用武之地:

2013-10-28 21:39:13 1668

原创 生成所有括号匹配情况 Generate Parentheses

题目源自于leetcode。题目:Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:"((()))", "(()())", "(())()",

2013-10-28 11:08:00 1423

原创 多种括号的匹配 Valid Parentheses

题目源自于Leetcode。题目:Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.The brackets must close in the correct order, "()" and "()[]{

2013-10-27 15:21:09 1227

原创 Linux输入输出的I/O缓冲

以前写C程序输入输出并没有特意关注过I/O缓冲区的问题。最近在学习fork的时候,发现I/O缓冲区是需要关注的一个细节问题。I/O缓冲区是Unix支持的一项标准,并且得到ISO C标准的支持。其作用:    标准I/O库提供缓冲的目的是尽可能减少外部设备数据读写read和write的次数,从而加快CPU的工作效率。缓冲区的大小:    缓冲区的大小等于外部块设备的一个块长大小时效率

2013-10-27 13:31:02 2008

原创 fork函数的用法总结

fork函数的概念:在Unix操作系统中,fork函数源于。其作用是创建一个子进程。其函数原型为 pid_t   fork( void );    · 若调用成功,则会产生一个子进程。因此会返回两个值,子进程内返回0,父进程内返回子进程的ID;    · 若调用失败,则父进程返回-1。遇到fork最好要画出进程的树状关系图。父子进程的空间关系:    子进程是父进程

2013-10-26 17:41:51 2340

原创 函数指针的概念和用法

本文来全面的学习一下函数指针。在概念上,函数指针不难理解,和指向变量的指针一样,指向着一个地址,这个地址是一个函数的入口地址(本质上函数名就是函数的入口地址)。在形式上,由于函数原型比变量的形式要复杂,所以函数指针的使用形式要复杂一些。不要因为指针前面加的是函数二字觉得神秘,把“函数”看作是“函数变量”即可。指针函数的什么?:    先来说下另一个概念,叫指针函数,个人感觉这个叫法其实是有

2013-10-25 08:58:29 2405

原创 压缩字符串中的连续重复字符

题目源自于华为公司机试题目。题目:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1、仅压缩连续重复出现的字符。比如字符串”abcbc”由于无连续重复字符,压缩后的字符串还是”abcbc”。2、压缩字段的格式为”字符重复的次数+字符”。例如:字符串”xxxyyyyyyz”压缩后就成为”3

2013-10-24 11:10:27 3638

原创 Django 笔记第一篇 基础回顾

接触Django已经有半年多了,用它做过一些个小的项目,不过认识的都是浅层的东西,现在决定开始深入的学习这一开源框架。第一篇先回顾一下学过之前的内容。Django框架的核心包括:一个基于正则表达式的URL分发器:urls.py。一个视图系统:用于处理请求, views.py。一个模板系统:模板处理引擎将设计HTML页面和编写Python代码这两种工作分离开。一个面向对象的映

2013-10-24 09:50:43 1050

原创 Nginx的架构介绍 Nginx第二篇

重要的数据结构:1、用于定义命令的ngx_command_s,声明类型是一般用它的别名ngx_command_tstruct ngx_command_s { ngx_str_t name; ngx_uint_t type; char *(*set)(ngx_conf_t *cf, ngx_

2013-10-23 21:51:35 984

原创 Python的字符串连接join和拆分split

字符串连接1、普通的无缝连接:用加号+。a = "hello"b = "abc"c = a + bprint c2、使用join做连接:其使用规则是A.join(B),要求a、b均为字符串。其作用是重复利用A把B的各个部分穿接起来(注意只穿接内部,左右两侧不加A)。· 参数A是普通字符串,包括空格或空字符串。· 参数B可以是字符串或者以字符串为元素的lis

2013-10-23 18:43:15 3956

原创 高楼扔鸡蛋问题

题目:一座100层的高楼,有2个完全一样的鸡蛋,现在要得出恰好从第几层开始扔鸡蛋下去会碎(可能第1层就碎,也可能第100层都不碎)。题目的问题是:应该如何用最少的测试次数对于任何答案楼层都能够使问题得到解决?分析:    这其实是一个查找问题,要求最坏情况的比较次数也最少。如果100层楼也不碎就是所查找值不存在。    思考1:要知道,最笨(扔的次数最多)的办法是顺序查找法,从

2013-10-23 11:01:34 3701

原创 C++对dll链接库的显示(动态)调用和隐式(静态)调用

C++调用dll链接库的方式有两种:动态调用(又叫显示调用)、静态调用(又叫隐式调用)。一、静态调用dll    静态调用,又称隐式调用。由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码,Windows操作系统会负责控制DLL导入内存的次数。这种调用方式简单,能够满足通常的要求。通常采用的方法是把产生动态连接库时产生的.LIB文件加入到应用程序的工程中,想使用DLL中的

2013-10-22 23:06:16 18534 1

原创 Python 字符数字的格式转换

十六进制 -> 十进制例如,十六进制数ff(字符串形式)转换为十进制数255int('ff', 16) //第二个参数是要转换到的数的进制十进制 -> 十六进制将十进制数255转换为十进制数0xff(字符串形式)hex(255) 字符 -> Ascii码(十进制)ord(‘a’)Ascii码(十进制) -> 字符chr(97)

2013-10-22 22:18:22 3374

原创 海量数据问题 解决方法 (2014年4月3日更新)

海量数据的难点:    1、时间长:怎么设计优化?    2、空间不够: 怎么大而化小、分而治之?怎么样存储能又省又快?解决海量数据问题的主体思想:先划分为小,再快速处理,最后合并。    1、数据(文件)拆分:通过取模运算,将大数据(文件)拆分为若干个小数据(文件)。文件的拆分可能不是简单的几刀切,有可能是对所有数据根据某个依据的映射划分,这类似于桶的思想。    2

2013-10-22 20:23:49 977

原创 Nginx的安装配置和自定义模块添加 Nginx第一篇

第一次接触nginx。一点一点来,持续学习。一、安装与启动:1、下载源代码(官方网站) 下载linux版本的源码。我下载的是nginx1.4.3版本。我的系统版本是ubuntu10.04。2、放在某个位置,然后编译它。./configure --prefix=/usr/local/nginx(指定安装部署后的根目录) --add-module=/home/ngi

2013-10-22 10:57:03 4231

原创 海量数据问题-汇总 (2014年4月3日更新)

海量数据问题汇总海量日志TOP统计· 30天每天一个日志文件,日志中每个人一个int uid,找出这30天内,访问超过5天的人的个数。· 一个很大的日志数据,提取出某日访问百度次数最多的那个IP。· 从300万个查询字符串中统计最热门的10个查询。· 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频

2013-10-21 14:48:02 2157

原创 三种类的访问权限与继承方式 public protected private derive

首先对于非派生的情况:    类 访问 自身的公有成员、保护成员、私有成员,都是OK的。    类对象 访问 自身的公有成员是OK的。    类对象 访问 自身的保护成员是error的。    类对象 访问 自身的私有成员是error的。然后对于派生的情况:一、公有继承方式(最常用):public基类成员保持自己p

2013-10-21 10:43:04 1263

原创 图的实现和图的广度遍历 Gragh's BFS

图的实现方法有2种,在之前的一篇博文图的深度遍历中有介绍。在同样的2种图的存储方式的基础上,可以进行图的广度遍历。图的邻接矩阵法,依然是申请完全连续的空间。通过二维数组空间来存储和访问图中每个边的存在性(或权值)。int (*edge)[VERTEXNUM] = (int (*)[VERTEXNUM])malloc(sizeof(int)*VERTEXNUM*VERTE

2013-10-21 10:42:23 1029

原创 队列的实现 queue

队列是规定一头只进、另一头只出的线性结构。其一般由循环队列实现,这样可以使得存储空间固定且快捷。因此需要申请一段固定的空间,设定队头front和队尾rear。入队操作是队头添加一个元素front+1,出队操作是队尾去除一个元素rear+1。初始条件(空队):规定front和rear在同一个位置,front == rear。一般状态:rear位于队尾元素的

2013-10-21 10:40:57 1456

原创 字典树Trie树的应用

问题:有若干个字符串,求他们的最长公共前缀子串。解法:该问题的一个比较好的办法是使用Trie树。因为Trie树有明显的字符串前缀特征。在查询近似前缀的时候经常用到。这里我建立了Trie树,且为了寻找最长公共前缀子串更方便,对结点加入了分支个数属性branch和出现次数属性times。这样,把所有字符串加入Trie树之后,通过根结点出发寻找单分支路径且出现次数均为字符串集个数,就可以找到结果

2013-10-21 10:40:30 1696

原创 堆排序 全面总结

堆排序:虽然用到类似二叉树的思想,但是仍是原地排序。堆分为大根堆和小根堆两种。堆顶元素一定是该序列最值。对于从小到大的排序,适合采用大根堆,每轮都将堆顶的最大值与堆末元素交换。堆排序的基本思想:由于大根堆的堆顶元素是最大值,因此我每次都可以找到当时的最大值,从而达到排序的目的。具体的,先把原始序列变成堆,然后把堆顶最大值调换到尾部作为已排好序的部分(堆外),此时堆变小且被破坏,

2013-10-21 10:39:35 1319

原创 0-1背包问题的动态规划解法

问题描述:         有n个物品,每个物品有对应的重量和价值。编号重量价值1w[1]v[1]2w[2]v[1]3w[3]v[3]…

2013-10-21 10:38:44 1570

原创 桶排序 Bucket sort

桶排序在操作上类似于基数排序。这是一种分治/划分的思想。先定义一个“桶”,把数据集合分成若干个小集合。然后桶内的排序就是用普通的排序方法,选一个最优的。划分的方法是需一个映射函数f(k),将所有数据分别映射到各自的桶中。基数排序的划分就是按照每个权值位的,桶排序也可以这样,但更好的情况是有一个能类似hash的函数,能做到更好的映射。

2013-10-21 10:30:22 1577

原创 求一个数的平方根

方法一: 使用标准库函数, 中的sqrt函数直接计算。其函数原型为: float sqrt (float),double sqrt (double),double long sqrt(double long)但是不知道标准库函数时怎么实现的。方法二:二分查找法可以根据自己希望的精确度来规定循环的结束条件。[cpp] view

2013-10-21 10:29:41 6595

原创 bitmap 在海量数据处理中的使用

1,在处理海量数据的时候,必须要高效利用内存空间,否则内存不可能存下这么多数据。如果我只想记录某个数据的存在性,可以利用bitmap原理,把每个数据映射为一个bit。1表示存在,0把表示不存在。2,bitmap原理:涉及到的变量bitmap:一个char型数组,用于存储信息。index:bitmap中的一个位置size:bitmap中能存储的数据

2013-10-21 10:27:35 1182

原创 WinSocket的最简单示例

[cpp] view plaincopy//client  #include   #include   #include   #include   #include   #include   #define SERVER_ADDRESS "12.12.12.67" //服务器端IP地址  #define PORT           

2013-10-21 10:26:30 1110

原创 贝叶斯算法应用于反垃圾邮件

对抗垃圾邮件的技术有很多,今天学习的贝叶斯算法属于一种机器学习领域的技术。这是一种分类算法,根据贝叶斯原理来计算邮件可能是垃圾邮件的概率,如果高于阈值,就认为这是垃圾邮件。其判断的准确程度随着学习次数的增加而增加,这就需要以已知的邮件作为样本进行学习,因此贝叶斯方法常会和其他垃圾邮件检测技术相配合。贝叶斯过滤算法的基本步骤1. 利用其他技术收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集

2013-10-21 10:23:22 2904

原创 IDAPRO的python插件-IDAPython

IDAPython是IDA的一款插件。将python和ida结合起来,利用python语言就可以更加自动化的分析程序。IDA5版本里没有带这个插件,需要自己装,并且目前不支持python2.6+。所以还是用IDA6吧,内置自带IDAPython。这个插件内部的脚本放在ida主目录的python目录里,里面有4个py,idaapi.py,idautils.py,idc.py,init

2013-10-21 10:22:38 12107

原创 AJAX 异步传输的WEB模式

如果有这么一种需求,即希望在不更新页面的情况下与服务器端进行数据交互,并且你的行为能够实时得到相应,那么就可以使用这篇博文要介绍的技术。AJAX指异步JavaScript及XML(Asynchronous JavaScript And XML)。AJAX是一种在2005年由Google推广开来的编程模式,不是一种新的编程语言,而是一种使用现有标准的新方法。通过AJAX,你的JavaSc

2013-10-21 10:21:46 1648

原创 Django 框架入门学习

Django的学习借助于其强大的手册Django Book,该手册已经被翻译为中文。一个最简单的Django项目可以由下面几个文件组成:.|- __init__.py|- manage.py|- setting.py|- urls.py|- views.py|- mytemplate.html运行manage.py文件来启动这个项目的web服务。

2013-10-21 10:20:16 1101

原创 Emacs 常用命令

基本命令:C-x C-c : 退出EmacsC-x C-f : 打开一个文件,如果文件不存在,则创建一个文件C-g : 取消未完成的命令###########################################################编辑C-x u 撤销M-d : 删除光标后的词语#################################

2013-10-21 10:19:35 724

原创 vim 常用命令

常用命令:u 撤销##############################################剪切粘贴dd 剪切当前行yy 复制当前行p 粘贴##############################################移动光标hjkl 上下左右 0 到当前行首$ 到当前行尾nG 移动到第n行gg 移动到第一行

2013-10-21 10:19:00 998

原创 删除链表的倒数第n个结点 Remove Nth Node From End of List

题目源自于Leetcode。题目:Given a linked list, remove the nth node from the end of list and return its head.只允许过一遍。思路:特别主要当原链表节点个数小于n和等于n的时候这两种特殊情况。/** * Definition for singly-linked list.

2013-10-20 18:37:20 911

原创 手机键盘上的排列组合问题 Letter Combinations of a Phone Number

题目源自于Leetcode。题目: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.思路:

2013-10-20 17:25:50 1430

原创 寻找若干个字符串的最长公共前缀 Longest Common Prefix

题目来源于Leetcode。题目:给出若干个字符串,找出他们的最长公共前缀子串。假设这里字符串有n个,平均长度为m。方法:1、所求的最长公共前缀子串一定是每个字符串的前缀子串。所以随便选择一个字符串作为标准,把它的前缀串,与其他所有字符串进行判断,看是否是它们所有人的前缀子串。这里的时间性能是O(m*n*m)。2、列出所有的字符串的前缀子串,将它们合并后排序,找出其中个数为n且

2013-10-20 11:44:19 10980 2

空空如也

空空如也

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

TA关注的人

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