03 2014 档案

摘要:什么是奶酪?稳定的工作、身心的健康、和谐的人际关系、甜蜜美满的爱情,活着令人充满想象的财富......墙上格言如果不改变,你就会被淘汰。经常嗅一嗅奶酪,这样你才知道他是否依旧新鲜。朝着新的方向前进,你就会发现新的奶酪。当你克服了恐惧,你就会感到轻松自在。想象自己正在拥有奶酪,这样可以帮助你找到新的奶酪。你越快放弃旧的奶酪,你就可以越早享受新的奶酪。在迷茫中搜寻总比停留在没有奶酪的地方更有保障。抛弃旧的观念,才能找到新的奶酪。只要相信自己能够并且找到新的奶酪,你就会改变自己的行为。及早注意细微小变化,这会有助于你适应即将来的大变化。我感觉对我印象最深的一句话改变自己最快捷的方式就是嘲笑自己的愚蠢 阅读全文
posted @ 2014-03-30 22:33 jihite 阅读(606) 评论(0) 推荐(1) 编辑
摘要:这个问题阮一峰老师讲的很清楚,链接这里我只贴一下我的C++实现代码:#include #include #include #include #include using namespace std;void BuildPatchMatchTable(int *partMatchTable, char... 阅读全文
posted @ 2014-03-30 12:13 jihite 阅读(16542) 评论(4) 推荐(1) 编辑
摘要:1. 序词是句子组成的基本单元,不像英语句子已经分好词了,中文处理的第一步就是中文分词。分词中面临的三大基本问题分词规范分词歧义未登录词的识别中文分词算法大概分为两大类第一类:基于字符串匹配 即扫描字符串,如果发现字符串的子串和词相同,就算匹配。这类分词通常会加入一些启发式规则,比如“正向/反向最... 阅读全文
posted @ 2014-03-29 11:02 jihite 阅读(11347) 评论(0) 推荐(2) 编辑
摘要:实例替换前 abc def ghi替换后 abcdefghighi思路从前往后遍历字符串a,记录空格的个数SpaceNuma[i] = '' : SpaceNum++a[i]!='' : a[i-SpaceNum] = a[i]参考代码#include #include using namespace std;void RemoveSpace(char *a){ if(a == NULL) return; int len = strlen(a); int SpaceNum = 0; for(int i = 0; i 0) a[i -... 阅读全文
posted @ 2014-03-24 20:31 jihite 阅读(1602) 评论(0) 推荐(0) 编辑
摘要:1、jdk-1_5_0_06-linux-i586.bin下载到/usr/soft,赋予可执行权限:chmod 755 jdk-1_5_0_06-linux-i586.bin2、执行:./jdk-1_5_0_06-linux-i586.bin 空格键翻页,到最后输入yes (或直接选All)3、配置环境变量:在/etc/profile 中加入:export PATH=/usr/soft/jdk1.5.0_06/bin:$PATHexport JAVA_HOME=/usr/soft/jdk1.5.0_064、运行:source /etc/profile 使配置文件生效5、运行:java -ve. 阅读全文
posted @ 2014-03-24 10:30 jihite 阅读(15677) 评论(2) 推荐(0) 编辑
摘要:2012微软暑期实习生笔试题阿里巴巴集团2014秋季校园招聘笔试题 阅读全文
posted @ 2014-03-23 15:44 jihite 阅读(292) 评论(0) 推荐(0) 编辑
摘要:问题判断一数字序列是否为这些数字入栈的一种出栈方式(前提:栈中的数字不重复)例如假设入栈的序列为:1 2 3 4 5那么4 5 3 2 1为一种弹出序列, 4 3 5 1 2不是思路开辟一个辅助栈,模拟入栈出战过程(假设pa为入栈序列,pb为出战序列)pa中的元素依次压入辅助栈新压入的元素与弹出序列的栈底相同,辅助栈弹出,同时pb向上移动不相同了pa中的元素继续入辅助栈参考代码#include #include using namespace std;bool IsPopOrder(const int *a, const int *b, int lena, int lenb){ if(l... 阅读全文
posted @ 2014-03-22 23:01 jihite 阅读(4223) 评论(0) 推荐(0) 编辑
摘要:思路参考代码#include using namespace std;void printNumAsClockwise(int a[][4], int row, int col){ if (row = left; --i) cout = up; --i) cout using namespace std;void printNumAsClockwise(int *a, int row, int col){ if (row = left; --i) cout = up; --i) cout << ... 阅读全文
posted @ 2014-03-22 20:35 jihite 阅读(622) 评论(0) 推荐(0) 编辑
摘要:镜像——照镜子得出的像。特征就是左右反着,如下图思路仿着递归遍历,递归得到镜像输入结点指针p不为空且部位叶子,反转p的左右孩子找p的左孩子的镜像找p的右孩子的镜像参考代码void getImage(BinaryTreeNode *root){ if(root != NULL && root->m_pLeft != NULL && root->m_pRight != NULL) { BinaryTreeNode *temp = root->m_pLeft; root->m_pLeft = root->m_pRight; root-&g 阅读全文
posted @ 2014-03-22 17:42 jihite 阅读(1133) 评论(0) 推荐(0) 编辑
摘要:题目输入两颗二叉树A和B,判断B是否是A的子结构,例如下图中B是A的子结构 A B参考代码1bool IsPartTree(TreeNode *root1, TreeNode *root2){ if(root1 == NULL... 阅读全文
posted @ 2014-03-22 17:12 jihite 阅读(1179) 评论(2) 推荐(0) 编辑
摘要:1. n!int f(unsigned int n){ if(n == 0 || n == 1) return 1; else return n*f(n-1);}分析:计算N的阶乘需要进行N次乘法运算,因此时间复杂度为O(N) 阅读全文
posted @ 2014-03-21 23:59 jihite 阅读(477) 评论(0) 推荐(0) 编辑
摘要:静态成员函数,可以不通过对象来调用,即没有隐藏的this指针。virtual函数一定要通过对象来调用,即有隐藏的this指针。static成员没有this指针是关键!static function都是静态决议的(编译的时候就绑定了)而virtual function 是动态决议的(运行时候才绑定)例证#include #include using namespace std;class A { public: A(int a) { this->val2 = a; } static void get_val() { this->val2 = 4; cout <... 阅读全文
posted @ 2014-03-21 23:43 jihite 阅读(6964) 评论(1) 推荐(1) 编辑
摘要:缘起#include #include using namespace std;class A { public: A() { cout #include using namespace std;class A { public: A() { cout #include using namespace std;class A { public: A() { cout << "default constructor!" << endl; } A(int i) { cout << "constr... 阅读全文
posted @ 2014-03-21 14:10 jihite 阅读(640) 评论(0) 推荐(1) 编辑
摘要:事因#include using namespace std;struct A{ A(int) {} A() {} void fun() {};};int main(){ A a(2); a.fun(); A b(); b.fun();}编译错误解释A b(); 是函数声明,返回值为A, 函数名为b不信你看#include using namespace std;int main(){ int test(); cout using namespace std;int main(){ int test(); cout << test << e... 阅读全文
posted @ 2014-03-20 21:43 jihite 阅读(1184) 评论(0) 推荐(0) 编辑
摘要:示例思路一:两个链表同时逐个遍历参考代码ListNode* combinList(ListNode *head_1, ListNode *head_2){ ListNode *head_3 = NULL; if(head_1 == NULL) { head_3 = head_2; } else if(head_2 == NULL) { head_3 = head_2; } else { ListNode *p1 = head_1; ListNode *p2 = head_2; ... 阅读全文
posted @ 2014-03-18 23:21 jihite 阅读(699) 评论(2) 推荐(1) 编辑
摘要:策略直接遍历总数为len,再次遍历第len-k+1个就是答案,但是这样遍历了O(N+k)个,可以在O在更短的时间内找到图示参考代码#include using namespace std;typedef struct ListNode{ int value; ListNode* next;}ListNode;void createList(ListNode *&head){ head = new(ListNode); head->value = 1; head->next = NULL; ListNode *p2 = new(ListNode); p2... 阅读全文
posted @ 2014-03-18 16:48 jihite 阅读(2463) 评论(0) 推荐(0) 编辑
摘要:案例数组内容:3 4 4 6 8 2 1 1 1调换奇偶:3 1 1 1 8 2 4 4 6思路源于快速排序方式1参考代码#include #include using namespace std;bool IsOdd(int num){ return num % 2 == 1 ? true ... 阅读全文
posted @ 2014-03-18 10:51 jihite 阅读(4464) 评论(2) 推荐(0) 编辑
摘要:比如n = 2那么从1一直输出到99分析直接输出,遇到大数时肯定有问题,比如n=100,存储100位的数据类型不存在。可以利用数组来存储大数,比如n=100,可以开辟个数组 char a[101]思路一模拟现实中的技术方式,逢九进一参考代码#include #include using namespace std;bool minuxOne(char *a, int *end_index, int size){ if((*end_index == size - 1 && a[size - 1] == '0') || *end_index = size) retu 阅读全文
posted @ 2014-03-18 10:08 jihite 阅读(2859) 评论(0) 推荐(0) 编辑
摘要:argc是参数个数,定义为intargv是字符串数组,存的是参数,定义为char**或者char* argv[]比如你编译好的程序为my.exe在命令行执行 my.exe 1 2 3那argc就是4,argv[0]是"my.exe",argv[1]是"1",argv[2]是"2",argv[3]是"3"; 阅读全文
posted @ 2014-03-16 22:59 jihite 阅读(13735) 评论(0) 推荐(3) 编辑
摘要:传值操作#include using namespace std;struct ListNode{ int m_nValue; ListNode* m_pNext;};void createList(ListNode *head){ head = new(ListNode); head->m_nValue = 1; head->m_pNext = NULL;}void deleteList(ListNode *p){ ListNode *next = NULL; while(p != NULL) { cout m_nValue m_... 阅读全文
posted @ 2014-03-16 17:46 jihite 阅读(564) 评论(0) 推荐(0) 编辑
摘要:题目给定单链表头指针和一个结点指针,定义一个函数在O(1)时间内删除该结点。分析对于上图实例链表(a)删除指针p有两种方式思路1:(b)找到前一个指针pre,赋值pre->next = p->next,删掉p思路2:(c)目的是删除p,但是不删p,直接用p->next的值赋值给p,把p->next删除掉(好处:不用遍历找到p的前一个指针pre,O(1)时间内搞定)于是,定位到思路2,但是思路2有两个特例:删除的是尾指针,需要遍历找到前一个指针整个链表就一个结点(属于删尾指针,但没法找到前面的指针,需要开小灶单独处理)大体算法思路待删指针不是尾指针: 待删指针的值用待删指 阅读全文
posted @ 2014-03-16 17:06 jihite 阅读(5744) 评论(3) 推荐(1) 编辑
摘要:进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。因为那些通信手段的效率太低了,而人们对进程间通信的要求是要有一定的实时性。 进程间通信主要包括管道, 系统IPC inter‐p... 阅读全文
posted @ 2014-03-16 11:31 jihite 阅读(404) 评论(0) 推荐(0) 编辑
摘要:临界区(CriticalSection)互斥量(Mutex)信号量(Semaphore)事件(Event)1. 临界区 通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。2. 互斥量 采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还... 阅读全文
posted @ 2014-03-16 11:21 jihite 阅读(1125) 评论(0) 推荐(0) 编辑
摘要:进程的基本状态等待态或称阻塞态(等待某个事件的完成)就绪态(等待系统分配处理器以便运行)运行态(占有处理器正在运行)状态转换运行态→阻塞态 往往是由于等待外设,主存等资源分配或等待人工干预而引起的。阻塞态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。就绪态→运行态 系统按某种策略选中就绪队列中的进程占用处理器,变成运行态不会发生: 阻塞态‐>运行态(运行态是从就绪队列中取值),就绪态‐>阻塞态进程调度是指按照一定的策略选择— 阅读全文
posted @ 2014-03-16 10:51 jihite 阅读(1404) 评论(0) 推荐(0) 编辑
摘要:死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。产生死锁的四个必要条件互斥条件:一个资源每次只能被一个进程(线程)使用。请求与保持条件:一个进程(线程)因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件 : 此进程(线程)已获得的资源,在末使用完之前,不能强行剥夺。循环等待条件 : 多个进程(线程)之间形成一种头尾相接的循环等待资源关... 阅读全文
posted @ 2014-03-16 10:32 jihite 阅读(539) 评论(0) 推荐(0) 编辑
摘要:进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;所有由你启动的进程都是用户进程。进程是操作系统进行资源分配的单位。在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。 在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。多任务带来的好处是明显的,比如你可以... 阅读全文
posted @ 2014-03-16 10:16 jihite 阅读(10874) 评论(0) 推荐(1) 编辑
摘要:UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系统只存在一个文件的副本,系统简单地通过在目录中建立一个新的登记项来实现这种连接。硬链接(Hard link) 该登记项具有一个新的文件名和要连接文件的inode 号,文件的目录登记项就是所谓的文件硬链接(硬链接,目录登记项: 文件名‐‐>文件的inode;文件名可以有多个,但文件inode 只是一个)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode, 只要该文件的链接数不为0,该文件就保持存在。硬链接不能跨越文件系统,为避免无限.. 阅读全文
posted @ 2014-03-16 09:49 jihite 阅读(1079) 评论(0) 推荐(0) 编辑
摘要:RAID(is short for redundant arrays of independent disks) 独立/廉价磁盘冗余阵列。基本思想:把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处增强资料整合度增强容错功能增加处理量或容量另外,磁碟阵列对于电脑来说, 看起来就像一个单独的硬盘或逻辑存储单元。RAID把多个硬盘组合成为一个逻辑磁区,因此,作业系统只会把它当作一个硬盘。RAID目前有0~7及其中的若干两种组合等十余种不同的等级,不同的RAID方法各有其优缺点,RAID. 阅读全文
posted @ 2014-03-16 08:54 jihite 阅读(501) 评论(0) 推荐(1) 编辑
摘要:uptimeuptime另外还有一个参数 -V(大写),是用来查询版本的procps是一个实用程序包,主要包括ps top kill等程序主要用来显示与控制一些系统信息,进程状态之类的内容。以下显示输入uptime的信息:04:03:58 up 10 days, 13:19, 1 user, loa... 阅读全文
posted @ 2014-03-16 08:42 jihite 阅读(47600) 评论(4) 推荐(5) 编辑
摘要:1. load average 定义linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。通过系统命令"w"查看当前load average情况上边0.31,0.30,0.31表示第一位0.31:表示最近1分钟平均负载第二位0.30:表示最近5分钟平均负载第三位0.31:表示最近15分钟平均负载注:linux系统是5秒钟进行一次Load采样2. load average值的含义1) 单核处理器假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU 阅读全文
posted @ 2014-03-15 23:31 jihite 阅读(57898) 评论(3) 推荐(9) 编辑
摘要:原理先看个例子,存储字符串abc、ab、abm、abcde、pm可以利用以下方式存储 上边就是Trie树的基本原理:利用字串的公共前缀来节省存储空间,最大限度的减少无谓的字串比较。应用 Trie树又称单词查找树,典型的应用是用于统计,排序和保存大量的字符串(不仅用于字符串),所以经常被搜索引擎系统用于文本词频的统计。设计 trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点... 阅读全文
posted @ 2014-03-15 15:58 jihite 阅读(12862) 评论(0) 推荐(2) 编辑
摘要:非类型模版类型模版类模版函数模版一。非类型模版#include using namespace std;templateclass Index{ public: int operator[](char vchar) { return vchar % Size; }};int main(){ Index index; cout using namespace std;templateclass trie{ public: trie(Type val_1, Type val_2) : num_1(val_1), num_2(val... 阅读全文
posted @ 2014-03-14 23:31 jihite 阅读(944) 评论(0) 推荐(0) 编辑
摘要:代码#include using namespace std;templateclass Index{ public: int operator[](char vchar) { return vchar % Size; }};int main(){ Index index; cout 声明此参数 阅读全文
posted @ 2014-03-14 22:28 jihite 阅读(256) 评论(0) 推荐(0) 编辑
摘要:安装系统需要安装Java1.6+http://nlp.stanford.edu/software/tagger.shtml下载Download full Stanford Tagger version 3.3.1[155 MB]使用说明标注器有三个模式:标注、训练、测试这里我们用已经训练好的标注模型, 对于中文有两个(model目录下)chinese-distsim.tagger(性能比较好)chinese-nodistsim.tagger二者区别使用java -mx300m -classpath stanford-postagger.jar edu.stanford.nlp.tagger.m 阅读全文
posted @ 2014-03-14 11:20 jihite 阅读(10608) 评论(3) 推荐(0) 编辑
摘要:实现函数 double Power(double base, int exponent),即乘方运算。考虑问题exponet using namespace std;bool InvalidInput = false;bool equal(double val1, double val2){ if((val1 - val2 -0.0000001)) return true; else return false;}double Power(double val, int exponent){ InvalidInput = false; if(... 阅读全文
posted @ 2014-03-13 08:10 jihite 阅读(1714) 评论(0) 推荐(0) 编辑
摘要:看代码class A: def __init__(self, val): self.name = val def printName(self): print self.namea = A("hello")a.printName()结果My name is: hello__init__(注意两边各自有两个"_")在类建立新对象时,立马运行,在里面可以做一些初始化。类的方法与普通的函数只有一个区别:它们都有一个额外的参数self,指向自己,但是对象调用这个参数是不用明写(默认,写了就错了我)。 阅读全文
posted @ 2014-03-12 20:38 jihite 阅读(837) 评论(0) 推荐(0) 编辑
摘要:中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词。其基本实现原理有三点:基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法安装(Linux环境)下载工具包,解压后进入目录下,运行:python setup.py install模式默认模式,试图将句子最精确地切开,适合文本分析全模式,把句子中所有的可以成词的词语都扫描出来,适合搜索引擎接口组件只提供jieba.cut 方法用于分词cut方法接受两个输入 阅读全文
posted @ 2014-03-12 11:13 jihite 阅读(54909) 评论(0) 推荐(2) 编辑
摘要:一开始C++定义为:C with Classes。 如今的C++已经是一个多重范型编程语言,可以把C++视为有四个次语言组成的联邦语言。C。C++任然以C为基础。区块、语句、预处理、内置语言类型、数组、指针等。搞笑编程守则映射出C语言的局限:没有模版、没有异常、没有重载。Object-Orited C++。这部分是C with Classes诉求的:class、封装、集成、多态、virtual函数等。Template C++。模版威力强大,带来了崭新的泛型编程,即TMP(模版元编程)。STL。STL是template程序库。它对容器、迭代器、算法以及函数对象的规则有极佳的紧密配合与协... 阅读全文
posted @ 2014-03-09 23:54 jihite 阅读(484) 评论(0) 推荐(0) 编辑
摘要:一. 爬山算法 ( Hill Climbing ) 作为对比,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解。二. 模拟退火(SA,Simulated Annealing)思想 爬山法是完完全全的贪心法,每次都鼠目寸光的选择一个当前最优解,因此只能搜索到局部的最优值。模拟退火其实也是一种贪心算... 阅读全文
posted @ 2014-03-08 10:48 jihite 阅读(9769) 评论(1) 推荐(3) 编辑
摘要:需求今天写了三千二百行代码。今天写了3200行代码。两行意思相同,只是表达方式不太能够,统一掉。原理数字的特征是 数字 + 单位,例如三百,四十二,九千零二可以从后往前遍历,遇到的是0到9的数字,就乘以前一位的单位,遇到新的单位(十百千万)就替换成数字供下一个数字用。举例五百四十三1. 三-->3 3 10, 10 ≥10,且不为0 : r = 103. 四-->4, 4100, 10 0≥10,且不为0 : r = 1005. 五-->5, 5= 10 and i == 0: #应对 十三 十四 十*之类 if val > r: ... 阅读全文
posted @ 2014-03-07 19:54 jihite 阅读(19443) 评论(5) 推荐(1) 编辑
摘要:例如8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。解决方案贪心算法,在每次被访问的位置保证有最优解。思路一分析:求一共n位,求其中的m位组成的数最小。那么这个m位的数,最高位应该在原数的最高位到第m位区间找,要不然就不能当第m位了,如下图(得到3位数最小,要是百位数在25中找,就当不了百位数了): 同样找十位数时只能在百味数到目前位置中间搜,整个过程图示如下: 注意在区间有多个最小值,取距离最大的,保证下一位数有足够大的查找空间。参考代码#include #include #include using namespace std;int *q;... 阅读全文
posted @ 2014-03-05 18:07 jihite 阅读(5065) 评论(10) 推荐(4) 编辑
摘要:k近邻法(k nearest neighbor algorithm,k-NN)是机器学习中最基本的分类算法,在训练数据集中找到k个最近邻的实例,类别由这k个近邻中占最多的实例的类别来决定,当k=1时,即类别为最近邻的实例的类别。 如上图所示(引自wiki),当k=3时,此时红色的个数为2,则绿色的输 阅读全文
posted @ 2014-03-03 22:13 jihite 阅读(6337) 评论(0) 推荐(0) 编辑
摘要:开源中国:http://my.oschina.net/lotte1699/blog/142538网页快照:http://www.piaocafe.com/295977937/1393815670376264 阅读全文
posted @ 2014-03-03 11:04 jihite 阅读(455) 评论(0) 推荐(0) 编辑
摘要:假设数组是从小到大排序,数值可能为负数、0、正数。思路一可以一次性遍历一遍,找出绝对值最小值,此时时间复杂度为O(N),缺点是没有利用数组是有序的这一特点。思路二数组有序,可以利用二分查找的特性。中间的数是正数,往后找;中间的数是负数,往前找。问题的本质是找到正数的最小值,或负数的最大值,分析以下集中情况数组为a[], 数组大小为n.n=1,没有商量的余地,直接返回a[0] * a[n-1] >= 0,说明这些元素同为非正或同为非负。要是a[0]>=0,返回a[0];否则返回a[n-1]a[0] * a[n-1] =0说明a[mid]也为非正,缩小范围low=mid;如果a[mid 阅读全文
posted @ 2014-03-02 10:23 jihite 阅读(5901) 评论(5) 推荐(0) 编辑
摘要:Linux 环境下当GCC版本比较高时,编译代码可能出现的问题 问题是这样产生的,先看这个函数原型: 再看这个函数调用: 把这两个东西组合起来,用最新的g++编译一下就会得到标题中的警告。 为什么呢?原来char *背后的含义是:给我个字符串,我要修改它。 而理论上,我们传给函数的字面常量是没法被修 阅读全文
posted @ 2014-03-01 18:23 jihite 阅读(48267) 评论(2) 推荐(8) 编辑

点击右上角即可分享
微信分享提示