自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (22)
  • 收藏
  • 关注

原创 ptrace的使用举例

修改寄存器的值:#include <stdio.h>#include <stdlib.h>#include <sys/ptrace.h>#include <sys/types.h>#include <sys/wait.h>#include <sys/stat.h>#include <unistd.h>#include <sys/syscall.h>#include <sys/reg.

2016-07-24 22:34:41 1376

原创 网易实习生笔试题:二叉树

题目描述: 有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。 给定二叉树的根节点root,请返回所求距离。class Tree { void Inorder(TreeNode *root,vector<int>&v,int &small,int &

2016-07-23 09:00:59 444

原创 网易实习生笔试试题 求第K大的数

有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。 代码如下:#include<stdio.h>#include<stdlib.h>#define swap(t,x,y) (t = (x),x = (y),y = (t))int partition(int *a,int lo,i

2016-07-22 15:29:34 738

原创 字符串的全排列与组合

题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 基本思路: 从字符串中选出一个字符作为排列的第一个字符,然后对剩余的字符进行全排列,如此递归,从而得到所有字符的全排列。以对字符”abc”进行全排列为例,可以按下述步骤执行: 将a固定在第一位,求后面bc的排列 将b固定在第一位,求后面ac的排列 将c固定在第一位,求后面ab的排列#in

2016-07-20 19:10:45 4376

转载 矩阵原地转置,空间复杂度为O(1)(暂时先保存下来)

#include<iostream>using namespace std; /* 后继 */int getNext(int i, int m, int n){    return (i%n)*m + i/n;} /* 前驱 */int getPre(int i, int m, int n){    return (i%m)*n + i/m;} /* 处理以下标i为起点

2016-07-20 16:01:25 1599

原创 c语言链表初始化

#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct Node{ struct Node *pNext; int data;}NODE,*PNODE;PNODE init_list() { int len

2016-07-20 15:07:59 3309 3

原创 动态规划(5)求数组中最长递增子序列

写一个时间复杂度尽可能低的程序,求一个数组中(N个元素)中最长递增子序列的长度。#include<stdio.h>#include<stdlib.h>int Max(int a[],int n){// int n = sizeof(a) int max = a[0]; int i = 0; for (i = 1;i < n;i++) { if

2016-07-19 19:12:18 844

原创 动态规划(4)交替字符串

题目描述: 输入三个字符串s1,s2,s3,判断第3个字符串是否由前两个字符串s1和s2错而成且不改变s1和s2中各个字符的原有的相对顺序。

2016-07-19 15:10:28 522

原创 动态规划(3)格子取数问题

问题描述: 有n*n个格子,每个格子里有正数或者0,从最左上角往右下角走。一共走2次,(即从左上角走到右下角走两次),把所有经过的格子里的数加起来,求总和的最大值。如果两次经过同一个格子,则最后求得的总和中该格子中的数只加一次。 思路: 避免“不顾全局,只看局部”(貌似叫贪心) 动态规划保证全局最优。 代码如下:const int N = 202;const int inf

2016-07-19 15:05:40 820

原创 动态规划(2)字符串编辑距离

题目描述: 给定一个源串和目标串,能够对源串进行如下操作: 1)在任意位置插入一个字符 2)替换任意字符 3)删除任意字符 写一个程序,实现返回最小操作次数,使得对源串进行上述这些操作后等于目标串(源串和目标串的长度都小于2000),这就是字符串编辑距离问题: 百度百科定义: 编辑距离(Edit Distance),又称Leven

2016-07-19 08:57:03 584

原创 动态规划(1)最大连续字数组乘积

问题描述: 给定一个浮点数数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。 动态规划: 概念:动态规划一般用来求解最优化问题,其适用的条件是要求待求解的最优化问题具备两个因素:最优子结构和子问题重叠。通过求解一个个最优子问题,将解存入一张表中,当后续子问题的求解需要用到之前子问题的解时直接查表,每次查表的代价为常数时间。 分析本题: 乘积子数组中可能有正数,负数,也可

2016-07-18 15:23:45 1619

原创 字符串查找(2)KMP算法

Knuth-Morris-Pratt字符串查找算法,简称KMP算法,常用于在一个文本串S中查找一个模式串P出现的位置,因为这个算法有Donald Knuth,Vaughan Pratt,James H.Morris与1977年联合发表,因此取这3个人的姓氏的命名此算法。int KmpSearch(char *S,char *P){ int i = 0,j = 0; int Slen

2016-07-17 18:11:59 619

原创 字符串的查找(1)

题目描述: 假设现在有这样一个问题:有一个文本串S和一个模式串P,要查找P在S中的位置。 解法一:蛮力解决 假设现在文本串S匹配呢到位置i,模式串P匹配到j位置,用蛮力匹配的思路,有: 1)如果当前字符串匹配成功,S[i] == P[j],则i++,j++,继续匹配下一个字符 2)如果匹配失败,S[i] != P[j],则令i = i-j+1,j =

2016-07-17 18:07:03 465

原创 出现次数超过一半的数

题目描述: 数组中有一个数出现的次数超过了数组长度的一半,找出这个数 各种思路: (1)排序,最容易想到的。如果某个数在数组中出现次数超过一半,那么在已经排序好的数组索引的n/2处就一定是要找的这个数。时间复杂度O(nlogn),快排 (2)散列表,空间复杂度O(n) (3)每次删除两个不同的树 (4)记录两个值。时间复杂度是O(n) 代码如下:#include

2016-07-16 23:53:38 634

原创 杨氏矩阵

行和列分别递增的矩阵有一个专有名词叫杨氏矩阵,是由剑桥大学数学家杨表在1900年提出的,而在这个矩阵的查找俗称杨氏矩阵的查找。 定位法:时间复杂度是O(m+n)#include<iostream>using namespace std;#define M 4#define N 4bool find(int a[][N],int value)//注意这里的参数传递,貌似只能这样写 int a

2016-07-16 20:40:08 485

原创 有序数组的查找(个人感觉美到极致的一个算法)

对于包含n个元素的数组,整个查找过程大约要经过logn次比较。(二分查找算法) 代码如下: 非递归版本int BinarySearch(int array[],int n,int value){ int left = 0; int right = n-1; //如果上面这句是int right = n的话,则下面有两处需要改动 //while(left < r

2016-07-16 19:54:47 3633 2

原创 树(5)二叉树层次遍历的应用

#include "stdafx.h"#include <iostream>#include <fstream>#include <queue>#include <stack>#include <Windows.h>using namespace std;typedef struct _Node{ int data; struct _Node *left; st

2016-07-16 11:05:55 487

原创 树(4)判断某个序列是否是二叉查找树的后序遍历结果

二叉搜索树: (1) 它或者是一棵空树; (2) 或者是具有下列性质的二叉树: <1> 若左子树不空,则左子树上所有结点的值均小于它的根结点的值; <2> 若右子树不空,则右子树上所有结点的值均大于它的根结点的值; <3> 左、右子树也分别为二查找序树 5 7 6 | 9 11 10|8 由后序遍历性质可知最后一个元素是根节点 然后根据搜索二叉树性质划分为: 根左子

2016-07-16 10:18:10 344

原创 树(3)树的层次遍历

问题描述:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / / 6 10 / / / / 5 7 9 11 输出8 6 10 5 7 9 11。 代码如下:#include<iostream>#include<queue>using namespace std;struct bstNode{ bstNode

2016-07-16 09:27:14 497

原创 树(2)求二叉树结点最大距离

问题描述: 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义”距离”为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 思路:相距最远的两个节点一定是两个叶子节点或者一个叶子节点到它的根节点 代码如下:#include<iostream>using namespace std;struct NODE{ NO

2016-07-15 21:24:19 403

原创 树(1)把二叉查找树转换成有序的双向链表

输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。10 / / 6 14 / / / / 4 8 12 16转换成双向链表 4=6=8=10=12=14=16。 基本思路:中序遍历 构造双向链表 c语言代码如下:#include<stdio.h>#include<stdlib.h

2016-07-15 16:32:39 582

原创 深入理解c语言的return

例(1)#include<stdio.h>#include<stdlib.h>int fun(){ int temp = 3; return temp;}int main(){ printf("%d\n",fun()); return 0;}运行结果如下: [root@localhost ~]# ./a.out 3 反汇编结果如下: (gdb)

2016-07-15 10:18:37 972

原创 畅通工程(并查集)

首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,不用再修路了;如果是2个连通分支,则只要再修1条路,从两

2016-07-14 22:18:36 496

原创 最近公共祖先(2)

情况3:也是最普通的情况,二叉树是普通的二叉树,节点只有left/right,没有parent指针。                                              10                                          /       /                                         6

2016-07-14 15:19:10 634

原创 最近公共祖先(1)

最近公共祖先问题: 情况1:二叉树是个二叉查找树,且root和两个节点的值(a, b)已知。如果该二叉树是二叉查找树,那么求解LCA十分简单。基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2,说明t1和t2都位于t的左侧,所以它们的共同祖先必定在t的左子树中,从t.left开始搜索;如果t小于t1和t2,说明t1和t2都位于t的右侧,那么从t.right开始搜索;如果t1<=t<= t

2016-07-14 15:04:22 298

转载 红黑树

作者:July 二零一一年一月九日本文参考: I、 The Art of Computer Programming Volume I II、 Introduction to Algorithms, Second Edition III、The Annotated STL Sources IV、 Wikipedia V、 Algorithms In C Third EditionVI

2016-07-11 09:29:50 313

原创 红黑树

红黑树:一种特殊的二叉搜索树,满足如下性质: (1)根节点是黑的 (2)每个叶节点是黑的 (3)如果一个节点是红的,它的两个孩子节点是黑的 (4)每个节点要么是红的,要么是黑的 (5)对于任意节点而言,其到叶节点的每条路径到包含相同数目的黑节点

2016-07-11 08:33:06 324

PCHunter+spy.zip

pchunter和spy++。这个PCHUNTER还需要修改一些地方,基本功能是够用的。

2021-04-24

高级搜索思维导图.emmx

高级搜索思维图。百度,必应怎样进行高级的搜索,为何别人能搜到的东西,你却搜索不到。更多内容关注公众号:无情剑客

2020-06-11

UserForPlantUml.msi.zip

在使用PlantUml的时候,如果不使用Graphaviz的话,这只能画流程图,不能够实现类图,会提示dot.exe文件找不到

2019-10-13

Dota改建枚举进程MFC模块.zip

Dota改建 界面使用MFC,请执行下载MFC库,后续会不断更新。内容目前涉及枚举进程和模块

2019-09-10

在线预览完整实现.zip

基本思路::使用pdf.js实现在线预览pdf功能。将office(doc,execel),txt,png,jpeg等常见的格式在web端进行转换。 起初使用apose这个包,在Linux下中文字体显示为空格。这个网上有好多解决方案。但是由于内网环境,无法下载fc-list命令,放弃使用这个包。改成使用XDocService.jar这个包,简单看一下源码可知这个转换是放在xdoc服务器上进行的解析。如果条件允许,建议自己搭建一套解析系统,最好操作系统使用Windows。由于资源紧张,所以目前的方案使用的xdoc服务器进行的解析。能够将office(doc,execel),txt,png,jpeg等常见的格式转化为pdf,这个转化的功能还是很强大的。(帮xdoc做了一波广告)。不过话说回来,xdoc解析txt文件是会自带广告,这个怎么去掉,通过分析源码,修改pipe函数,过滤掉相关的广告字段就ok了。 Android中可以集成腾讯的x5内核。

2019-08-16

IOC简单实现Demo

一个简单的IOC实现Demo。使用注解和包扫描技术实现IOC。

2018-04-29

jsp+Servlet实现简单的登陆

Servlet+Jsp实现简单的登陆,HttpSession session = request.getSession();

2018-04-06

数据上传代码

数据上传相关的代码,异常处理等。数据上传相关的代码,异常处理等

2018-03-28

mysql-connector-java-5.1.7-bin.jar

加载驱动程序,这里需要引入Mysql-connection-java-5.1.7-bin.jar。没有这个包的会,加载驱动程序会失败,导致程序不能正常运行。

2017-10-15

百度地图隐藏无关区域

让百度地图只显示你想要的行政区,而将无关的区域进行隐藏。这样会让界面简介许多。echrts虽然也能做,但是百度已经不提供相关的数据下载了,同时echarts不能提供许多百度地图的特性。

2017-10-11

職責鏈模式

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连城成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。

2017-10-07

桥接模式代码

桥接模式:将抽象部分与它的实现部分分离,使他们可以独立地变化。本例中将不同形式的消息通过不同手段及逆行发送,消息类别为抽象类,而发送方式为实现类

2017-10-07

访问者模式代码

访问者模式:表示作用于某个对象结构中的各元素的操作,它使你可以在不改变各对象元素的类的前提下定义作用于这些元素的新的操作

2017-10-04

迭代器模式

迭代器模式:提供一种方法顺序访问一个对象中的各个元素而又不暴露该对象的内部表示。

2017-10-04

组合模式代码

组合模式:将对象组合成树形结构以表示部分整体的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。

2017-10-03

观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖与它的对象都得到通知并被自动更新。

2017-09-24

代理模式代码

为其他对象提供一种代理以控制对这个对象的访问。这里的代码示例使保护代理的代码,再其中使用的Java的动态代理。

2017-09-20

mediator模式

用一个中介者对象来封装一系列对象的交互,中介和者模式使得各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。

2017-09-13

原型模式代码

用原型实例指定创建对象种类并通过拷贝这些原型创建新的对象。代码示例位订单的处理,分为企业订单和个人订单,当订单数量超过1000时进行分解,这个时考虑到人对订单的处理能力。这里的克隆方法是自己实现的浅克隆

2017-09-11

UnicornView

能打開多種類型的文件,包括PDF,PDG。因爲遇到了PDG格式文件無法打開,可以使用這個工具很方便的打開,個人感覺很强大的工具

2017-09-05

Builder模式

Builder模式:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。当创建复杂对象的算法应该独立于改对象的组成部分以及他们的装配方式时。当构建过程必须允许被构造的对象有不同的表示时。

2017-09-03

抽象工厂模式代码

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 通过主板和cpu组装电脑。这里主板的CPU插槽数要和CPU的针脚数相等,也就是说CPU对象和主板对象是有关联的,同时CPU种类和主板的种类也有很多搭配,可以

2017-08-31

空空如也

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

TA关注的人

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