自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树怎么打印根节点到指定节点的路径及两个节点之间的路径

通过先序遍历非递归方法,边遍历边进行比较,如果相等就停止,然后输出堆栈中的路径,在php中也就是数组排着输出即可。两个节点之间的路径就是两个都比较就可以了。如果是求路径之和是否为定值,就进行判断是否相等即可。打印根节点到所有叶子节点的路径,就是每个节点判断一下是不是叶子节点,是的话,就输出

2017-10-20 22:59:55 4472

原创 求二叉树的镜像

求二叉树的镜像就是将该二叉树对称翻转。所以就是自上而下,当前节点的左右节点互换位置即可实现!

2017-10-20 22:50:26 189

原创 求二叉树的最大距离

求二叉树的最大距离就是求两个节点之间路径最长的节点。问题可以分为两种情况:第一种情况:最长为左子树的最深节点到右子树的最深节点。第二种情况:在左子树或者右子树中,就最远,不经过根节点。<?phpclass TreeNode{ var $val; var $left=null; var $right=null; function __construct($val){ $

2017-10-20 22:23:34 362

原创 三扇门的问题

有三扇门,只有一扇门后面有奖品,若你选了1号门,而主持人打开了2号门,发现2号门内没有奖品,主持人问你是否要改选3号门,你觉得是否有必要改选,为什么?我认为有必要改,因为在你不知道的情况下,分成了两种选择,一种是你选择的概率为1/3,一种是剩下两个门,概率为2/3.所以奖品在剩下那两个中的概率为2/3,这个时候将一个没有的排除掉。那么剩下这个的概率也是2/3.所以需要修改。

2017-10-20 22:07:05 2612

转载 ping过程中发生了什么

A主机来进行ping B主机的ip(1) A主机构建一个ICMP格式的数据包;(2) ICMP协议+B主机的IP地址 交给IP协议;(3) IP层构建一个数据包(A主机的IP地址+控制信息+B主机的IP地址),获得B主机的MAC地址,以便构建一个数据帧;(4)主机B接受到主机A的发过来的数据帧以后,先检查该帧中包含的B的IP地址,并和本地的物理地址进行比对,如果符合

2017-10-20 21:00:08 892

原创 在2.5亿个整数中找出不重复的整数

使用bitmap但是要两位,这样00表示不存在,01表示唯一,10表示重复或者用两个bitmap,若果在第一个中出现了,就说明是重复数据,存入第二个bitmap中,然后进行比对。

2017-10-20 20:11:04 2222

原创 两个10G的文件中,求含有相同整数

方法一:使用位图方法bitmap,先将一个文件中的数据存入bitmap中,然后将第二个文件中的数据和bitmap对照,如果bitmap中存在就说明相同。这样就找到了所有的两个文件中相同的数据。方法二:哈希法,通过哈希值来对文件中的数据分到多个文件中,然后两个文件分解完的文件中相对应的再进行数据比较,确定是否有相同的数据,如果有就输出。

2017-10-20 20:06:42 2279

原创 怎么对10亿个电话号码进行去重

方法一:通过哈希算法,将10亿个电话号码按照哈希值落在多个文件中,重复的电话号码有相同的哈希值,肯定位于一个文件中,这样就可以分别对每个文件排序删除重复的电话号码。方法二:使用位图来进行处理。比如说这10亿个数的范围为【0-10亿】,那么就申请一个10亿的数组,数组类型为boolen,只有0和1,0表示没有,1表示有。这样自然而然的就删掉了重复的部分。

2017-10-20 19:42:54 11532 5

原创 100个球两个人每次最多取五个最少取一个求必胜方法.

100个球两个人每次最多取五个最少取一个,谁能拿到最后一个就赢,求第一个取的人的必胜方法.这种题目是考虑倍数的问题。每次最多取5个最少1个,这样的话就考虑每次取6,100÷6=16余4。先拿的人拿4个,不论第二个人拿几个,第一个人把他凑成6个,这样永远是第一个人取到最后一个。

2017-10-20 19:26:49 13339 4

原创 负载均衡算法

随机算法:随机分配轮训算法:轮着分配哈希算法:通过算出来的哈希值来决定分配在哪个服务器上,这样同一个客户可以一直落在一个服务器上。一致性哈希算法:当一个服务器发生故障时,只有这个服务器上的的哈希值变化,其他的不变,然后重新分配。客户落在哈希环上,服务器也落在哈希环上,顺时针两个服务器之间的客户分配给顺时针的后一个服务器。添加服务器,也是落到哈希环上,按照上面的分配客户这样可

2017-10-19 16:44:09 183

转载 模板技术Smarty

一、什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。也就是说原来的页面可以直接由PHP文件生成,通过Smarty将PHP文件与HTML文件分开来实现页

2017-10-19 14:43:54 284

原创 用什么方法可以在业务批量操作的时候保持原子性?例如删除多条文章,但是在中 间有一条被删除了,假设出现了错误,如何让整个操作回滚,并定位错误信息?

用什么方法可以在业务批量操作的时候保持原子性?例如删除多条文章,但是在中间有一条被删除了,假设出现了错误,如何让整个操作回滚,并定位错误信息?数据库的事务可以保持原子性却不能保证定位错误信息,加上try catch就可以定位错误信息了Db::startTrans(); try{ \app\common\controller\Common::ope

2017-10-19 11:14:26 788

转载 动态规划的一个例子

原文链接:http://blog.csdn.net/baidu_28312631/article/details/47418773 首先,我们看一下这道题(此题目来源于北大POJ):    数字三角形(POJ1163)        在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这

2017-10-19 09:41:00 245

转载 Awk、sed与grep简介

Awk、sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和awk还可以用于文本编辑,而grep则不具备这个功用。sed是一种非交互式且面向字符流的编辑器(a "non-interactive" stream-oriented editor),而awk则是一门模式匹配的编程语言,因为它的主要功能是用于匹配文本并处理,

2017-10-19 09:28:52 335

原创 一个无序自然数数列,给定一个数M,选取自然数数列中两个数,其中他们的和是M,打印所有这样的自然数对

一个无序自然数数列,给定一个数M,选取自然数数列中两个数,其中他们的和是M,打印所有这样的自然数对首先对这个数组进行从小到大的排序,然后首尾相加,如果比M小,则左边向后。如果比M大,则右边向前。当等于M时,输出,然后左边向后,右边向前。直到左右相等时,结束循环。

2017-10-18 20:49:10 586

转载 深度优先遍历和广度优先遍历

深度优先    深度优先遍历也叫深度优先搜索(Depth First Search)。它的遍历规则:不断地沿着顶点的深度方向遍历。顶点的深度方向是指它的邻接点方向。    具体点,给定一图G=,用visited[i]表示顶点i的访问情况,则初始情况下所有的visited[i]都为false。假设从顶点V0开始遍历,则下一个遍历的顶点是V0的第一个邻接点Vi,接着遍历Vi的第一个邻接

2017-10-18 09:01:39 566

原创 多进程和多线程怎么解决冲突

当多个线程或者多个进程同时调用一个文件发生冲突时,通过加锁和解锁来解决,或者规定他们的优先级。

2017-10-17 21:36:02 2228

原创 同一个表中的数据怎么进行比较

面试的时候,遇到了这个问题,当时考虑使用join。但是需要两个表明,记得有一个起别名的功能,但是当时记不清楚了题目如下表list中的分数比前一个大的所有数据select a.score from list a join list b on a.id=b.id+1 where a.score>b.score;

2017-10-17 16:39:01 2231

原创 n个数字选出m个求出所有的组合情况

有两种方法,一种是递归的递归:数组中的第i个数,可以出现在组合中,后面的数挑选组合中剩下个数的数;也可以不要这个数,后面的数中挑选组合中的数.<?php$array=array(1,2,3,4,5);$m=0;$n=2;$k=$n;$arr=array();find($array,$m,$n,$arr,$k);function find($array,$m,$n,$a

2017-10-16 21:41:25 742

原创 给出n个数字求出其中出现次数超过 n/2的那个数字

这个字数超过n/2,那么采用一种简单的方法就是如果该数把所有的都抵消掉,最后剩下的那个一定是这个超过n/2的数,所以遍历一遍就可以了。设定抵消值为$key,$key的个数设置为$num=1,向后遍历,如果不同,则$num-1,如果相同就$num+1。当$num=0时,重复前面步骤,直到遍历结束。$key的值就是这个数字。function findnum($array){$num=

2017-10-16 21:12:30 1637

原创 正则表达式快速上手

正则表达式.常见的一些元字符^表示开始;$表示结束;*表示前面出现0次或多次;+表示前面出现一次或多次;?表示前面出现0次或1次[0-9]表示0到9,与这个表示相同{0,1,2,3,4,5,6,7,8,9}()中放子表达式奇数个女生和任意个数个男生站队,所有可能的正则表达式为^M*F(M*(FM*F)*M*)*$

2017-10-16 20:50:10 542

原创 面向对象

因为学过一段时间的java所以我知道面向对象的三个特点:封装、继承和多态。封装我记得蛮清楚的,就是说类将函数和操作都封装起来了,只给外部提供部分信息,保证了安全。继承就是一个父类,一个子类继承他。多态只记得是不同的输入可以调用不同的函数。面试官说这只是其中的一个方面。下面就来专业的总结一下封装是一种将代码与它处理的数据结合起来,而不被外界干扰滥用的程序设计机制。也就是把客观

2017-10-16 19:52:16 163

原创 判断一个单向链表是不是回文链

要求时间复杂度为O(n),空间复杂度为O(1)。方法一:遍历链表,把链表的数据链接成一个字符串,顺带反转链表,再遍历,得到一个新的字符串,两个字符串比较是否相等,相等就是回文链。方法二:采用快慢指针,快的一次走两步,慢的一次走一步,当快的为null时,慢的在中间位置。然后翻转后半部分链表,前后两部分链表分别比较。

2017-10-16 19:44:39 790

原创 二叉树和多叉树

/*class TreeNode{    var $val;    var $left = NULL;    var $right = NULL;    function __construct($val){        $this->val = $val;    }}*/

2017-10-16 16:24:04 1483

原创 linux文件及路径权限

linux的用户分为三种:1.管理员 2.管理员所在的组 3.其他组权限分为是否拥有下面三个权限:可读(r)可写(w)可执行(x)ls -l可以获取该文件夹下的文件和权限,例如:-rwxr-xr-x,drwxr-xr-x其中第一个字符表示是不是一个文件夹,d代表是文件夹。后面九位,33分组,分别代表管理员、管理员所在的组和其他组的权限我们想给文件添加权限的时候,例如chmod

2017-10-16 08:37:38 778

原创 (笔试中的题目)一个已经排序好的数组找到两个数字相加等于一个给定的数

一个已经排序好的数组找到两个数字相加等于一个给定的数,要求时间复杂度为O(n)既然时间复杂度为O(n),那么就只能遍历一次。所以给定初始值$sum=$arr[0]+$arr[count($arr)-1];这样和给定的数字比较,如果大,则后半部分向前进,如果小,则前半部分向后,直到前后两个相遇结束循环。

2017-10-15 14:58:41 1882

原创 不用第三个参数交换两个数a和b

使用异或操作符来实现a=a^b;b=a^b;a=a^b;这样就可以实现不用第三个参数实现交换

2017-10-15 14:56:06 767

原创 如何在数据库中不改变表结构的前提下,新添一个属性?

有两种方法:第一种:在初始设计表时,将被查询的属性存放在一个字段当中,并且加上版本号字段。这样需要新增属性时,只需要将该属性放在存放所有被查询属性的字段当中。优点是:可以随时扩展,各个版本的数据都在,迁移数据方便。但是也有缺点:这个字段中的数据不能查询和建立索引。所以就有了第二种方法第二种:数据库建立三个字段:id,属性和值每一条数据分为多行进行存储,这样添加属性的时候

2017-10-14 21:32:54 1053

原创 给出一个集合,怎么的到他的所有子集合?

每一个量都有有和没有两种情况,所以每一个有没有可以使用一个二进制数来判断。所以根据集合元素的个数N,构造长度为N的二进制数。该长度所有的二进制数,就是他的所有子集。算法简单实用。共有2^N个子集。而且直接写就行了。chuachua的。

2017-10-14 20:39:18 339

原创 协议层

OSI参考模型(7层)物理层  在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。例如:网卡、网线数据链路层  数据链路层(Data Link La

2017-10-14 20:32:22 1574

原创 事务的四个特性

⑴ 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于

2017-10-14 20:19:04 567

转载 线程、进程和通信

原文链接:http://www.cnblogs.com/obama/archive/2013/04/12/3016509.htmlhttp://www.cnblogs.com/mydomain/archive/2010/09/23/1833369.html线程和进程的区别 a.进程是资源分配的基本单位,线程是cpu调度,或者说是程序执行的最小单位。在Mac、Window

2017-10-14 19:48:51 170

原创 URI和URL

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何定位这个资源。

2017-10-14 19:08:34 146

转载 cookie简介

Cookie是可以被Web服务器设置的字符串,并且可以保存在浏览器中。Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给

2017-10-14 18:30:19 213

转载 session简介

原文链接:http://justsee.iteye.com/blog/1570652由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可

2017-10-14 18:24:58 516

转载 HTTP协议的头信息详解

原网址:http://blog.csdn.net/huangjin0507/article/details/52170460但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,

2017-10-14 15:11:16 19450 1

转载 TCP与UDP区别总结

1、TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频

2017-10-13 08:58:54 206

原创 面试时遇到由rand5生成rand7

重点是每个数字产生的概率要相同。例如,rand5生成从1-5,每个数字的概率为0.2如果只用7个rand5相加来生成的话,概率是两边的数小,中间的数大。正确产生的方式如下:num=5*(rand5-1)+rand5-1if(numprint num%7+1;其中5*(rand5-1)生成等概率的数0,5,10,15,20,而后面的rand5-1生成等概率的0,1,2,3

2017-10-13 08:46:35 674

空空如也

空空如也

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

TA关注的人

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