自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于key-value的存储系统Redis

一、CAP原理 CAP是2000年PODC上Eric Brewer提出的一个概念,即Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性),但是三者不可兼得。经典的关系型数据库在C,A两方面做的非常好,但在互联网飞速发展的今天,在网络扩展方面出现了致命的硬伤。由于各种web2.0网站追求用户创造内容,于是产生了大量的写操作,关系型

2015-09-08 15:28:41 4750

原创 学习Scala第一天 scala开发环境搭建和helloword解析

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark           最近开始关注王家林老师的DT大数据梦工厂视频,因为刚开始接触,并不太了解Scala,以前对Java、C、C++了解多一点,也接触一些大数据处理的平台例如Storm,学习过Hadoop,随着Spark的流行,scala作为一个新的函数式编程语言,也随之流行起来。在与最近热门的编程语言R、PYTHON的选择中,对于大数

2015-07-25 23:35:25 1153

原创 策略设计模式

面向对象的好处,是通过封装/继承/多态实现程序的高内聚低耦合,而设计模式可以使得程序更加灵活,容易扩展,并且易于复用.策略模式是一种定义一系列算法,并将每一个算法封装起来,而且使他们可以相互替换,此模式让算法的变化,不会影响到使用算法的客户.Strategy:定义了所支持算法的公共接口StrategyA:封装了具体的算法或行为,继承于StrategyContext:初始化时,进行策...

2020-01-26 21:56:47 250

原创 AI 五子棋

.javascriptvar chessBoard = [];var me = true;var over =false;//yvar wins = [];//var myWin = [];var computerWin = [];for(var i=0;i<15;i++){ chessBoard[i]=[]; for(var j=0;j<15;j...

2019-07-19 00:55:27 256

原创 原型设计之Axure实战教程(二)

一、Axure的工作环境一、菜单和工具栏常用操作:文件打开、保存、撤销、重做、格式刷、输出原型、输出规格等操作二、页面导航面板可调整需要展示页面的层次和顺序,以用户注册为例,如下图 三、元件面板1、形状类基本形状为矩形,点击三角形可调整圆角,点击圆点可选择其他形状如心型、圆形等2、图片、占位符以及按钮类图片是可直接填入的图片,而占位符代表需要设计师设计的展示图片或者图标,按钮可以响应各种用户行为进...

2018-05-05 18:00:39 3539 1

原创 原型设计之Axure实战教程(一)

一、原型设计软件介绍为什么要进行原型设计?大约66%的软件开发失败或亏损的前三大原因为:       — 缺乏使用者参与      — 需求或规格不完整      — 需求或规格变更是一种高效的以用户为中心的技术,是个有效的简化文档编制、吸引使用者参与、早期辨认需求遗漏、将外在需求风险降到最低的方法。全球&gt;1000家公司使用Axure RP,淘宝、雅虎、腾讯、当当等都在使用二、Axure R...

2018-05-05 17:18:14 14247 2

原创 pydev开发环境搭建(python)

一、安装Eclipse1、安装jdk以及配置环境变量2、下载Eclipse IDE for Java EE Developers(根据实际情况选择32位还是64位)地址 :http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neonr 3、Eclipse不需要安装,解压到C盘根目录即可,运行eclipse...

2018-04-15 20:09:37 639

原创 剑指offer:不用加减乘除做加法(java)

题目:写一个函数,求两个整数之和,要求在函数体内不得适用+,-,* ,./  四则运算符号    面试的时候被问道这个问题,首先我们分析人们是如何进行十进制的加法的,比如如何得出5+17=22这个结果的,实际上,我们可以分三步进行:第一步只做各位相加不进位,此时相加的结果是12,第二步做进位,5+7中有进位,进位的值为10;第三步,把前面的两个结果加起来12+10的结果是22,刚好5+17

2016-10-15 15:58:22 3177

原创 剑指offer:求1+2+...+n(c/c++)

题目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句    这个问题本身没有太多的实际意义,但不少面试官认为这是一道不错的考查应聘者发散思维能力的题目,而发散思维能够反映出应聘者知识面的宽度,以及对编程相关技术理解的深度。  求1+2+...+n除了用公式n(1+n)/2之外,无外乎循环和递归两种思路,由于明确限制

2016-10-15 15:46:53 944

原创 剑指offer:圆圈中最后剩下的数字(java)

题目:0,1,,,,,n-1这n 个数字排成一个圆圈,从数字0开始每次从这个圆圈中删除第m个数字。求出这个圆圈里剩下的最后一个数字.    例如,0,1,2,3,4这5个数字组成的一个圆圈,从数字0开始每次删除第3个数字,则删除的前四个数字依次是2,0,4,1因此最后剩下的数字是3.    本题就是著名的约瑟夫环的问题。我们介绍两种方法:一种方法是用环形链表模拟圆圈的经典解法,第二

2016-10-15 15:02:10 1924

原创 剑指offer:扑克牌的顺子(java)

题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13.    思路:随机抽的5张牌可以看成5个数字组成的数组,大、小王是特殊的数字,不妨定义为0.接下来只要判断5个数字是不是连续的。最直观的方法是排序,然后用0去补满数组中的空缺。如果排序后的数组不是连续的,即相邻的两个数字都相隔若干个数字,但只要我们有足够的0可以补

2016-10-15 11:36:10 2395

转载 《数据挖掘 —— 从入门到求职》

最近秋招也已经慢慢接近尾声了,从去年 8 月底开始,先后参加了 datacastle ,阿里天池,牛客网各自举办的数据挖掘比赛(都是 top10 ),今年 4 月份又先后去百度,腾讯实习,到现在秋招快结束,也将近一年的时间,最终拿到手的比较有分量的 offer 主要是腾讯,百度,华为三家企业的 offer ,都是 sp,下面就将过去一年的一些经验做一下小总结,不一定是最合适的方法,但是当毫无头绪的

2016-10-15 10:53:37 12816 1

原创 剑指offer:n个骰子的点数(java)

题目:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。    骰子一共6个面,每个面上都有一个点数,对应的是1-6之间的一个数字。所以n个骰子的点数和的最小值是n,最大值为6n.另外根据排列组合的知识,我们还知道n个骰子的所有点数的排列数为6^n.要解决这个问题,我们需要先统计出每一个点数出现的次数,然后把每一个点数出现的次数除以6^n,就能求出每

2016-10-06 22:00:00 1732

原创 剑指offer:翻转单词顺序VS左旋转字符串(java)

题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串为“I am a Student.",则输出为”Student. a am i".    这个题目是流传甚广,很多公司都多次拿来作为面试题,很多应聘者也多次在各种博客或者书籍上见到过通过两次翻转字符串的解法,于是很快可以跟面试官说出自己的思路:第一步反转句子中所有的

2016-10-06 20:41:25 637

原创 剑指offer:和为s的两个数字VS和为s的连续正数序列(java)

题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多个数字的和等于s,输出任意一对即可。例如输入数组{1,2,4,7,11,15}和数字15.由于4+11=15,因此输出4和11.    只要想到一个办法,应聘者就可以立马告诉面试官,即使这个办法不一定是最好的。比如这个问题,很多人会立即能想到O(n2)的方法,也就是先在数组中固定一个数字,

2016-10-06 19:53:16 564

原创 剑指offer:数组中只出现一次的数字(java)

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请些程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1).    如输入数组{2,4,3,6,3,2,5,5},因为只有4,6这两个数字只出现一次,其他数字都出现了两次,所以输出4,6    这是一个比较难的题目,很少有人在面试的时候不需要提示一下子想到最好的解决办法。一般当应聘者想了几分钟

2016-10-06 19:03:31 3117

原创 剑指offer:判断二叉树是不是平衡二叉树(java)

题目:输入一棵二叉树的根节点,判断该树是不是平衡的二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。    有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差不超过1,按照定义它就是一棵平衡的二叉树。这种思路实现的代码如下:

2016-10-06 18:48:19 9407 10

原创 剑指offer:二叉树的深度(递归&&非递归)(java)

题目:输入一棵二叉树的根节点,求该数的深度。从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。例如,如下图的二叉树的深度为4,因为它从根节点到叶结点的最长的路径包含4个结点(从根结点1开始,经过2和结点5,最终到达叶结点7)    如果一棵树只有一个结点,它的深度为1,如果根节点只有左子树而没有右子树,那么树的深度应该是其左子树的

2016-10-06 17:35:27 2120

原创 剑指offer:数字在排序数组中出现的次数(java)

题目:统计一个数字在排序数组中出现的次数。例如输入排序数组为{1,2,3,3,,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4    既然输入的数组是排序的,那么我们很自然的想到利用二分查找算法。在题目给出的例子中,我们可以先用二分查找算法找到第一个3.由于3可能出现多次,因此我们找到的3的左右两遍可能都是3,于是我们在找到3的左右两边顺序扫描,分别找出第一个3

2016-10-06 10:28:36 1126

原创 剑指offer:两个链表的第一个公共结点(java)

题目:输入两个链表,找出它们的第一个公共结点。     思路:首先遍历两个链表得到他们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结点。在第二次遍历的时候,在较长的链表上先走若干步,接着再同时在两个链表上遍历,找到第一个相同的结点就是他们的第一个公共结点。 public ListNode findFirstCommonNode(ListNode root1,ListNode

2016-10-05 22:34:16 446

原创 剑指offer:数组中的逆序对(java)

题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数例如在数组{7,5,6,4}中,一共存在5对逆序对,分别是{7,6},{7,5},{7,4},{6,4},{5,4}。    看 到这个题目,我们的第一反应就是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数

2016-10-05 22:29:52 8117 2

原创 剑指offer:第一个只出现一次的字

题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'.    看到这样的题目,我们最直观的想法就是从头开始扫描这个字符串中的字符。当访问某个字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符想比较,因此这种思路的时间复杂度为O(n2),面试官不会满

2016-10-05 21:24:22 388

原创 剑指offer:丑数(java)

题目:我们把只包含因子2,3,5的数称为丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做第一个丑数。逐个判断每个整数是不是丑数的解法,直观但不够高效    所谓一个数m是另一个数n的因子,是指n能被m整除,也就是说n%m==0.根据丑数的定义,丑数只能被2,3,5整除。也就是说如果一个数能被2整除,我

2016-10-05 19:26:38 496

原创 剑指offer:把数组排成最小的数(java)

题目:输入一个正整数数组,把数组里面所有的数字拼接排成一个数,打印能拼接出的所有数字中的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.    这个题目最直接的做法应该是先求出这个数组中的所有数字的全排列,然后把每个排列拼接起来,最后求出排列起来的数字的最小值。求数组的排列和面试题28非常相似。根据排列组合的只是,n个数字总共有n!排列,我们再来

2016-10-05 16:44:32 1198

原创 剑指offer:从1到n整数中1出现的次数(java)

题目:输入一个整数n,求从1到n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,和12,1一共出现了5次。不考虑时间效率的解法,靠它想拿offer有点难    如果在面试的时候碰到这个问题,应聘者大多能想到最直观的方法,也就是累加1到n中每个整数1出现的次数。我们可疑每次通过对10求余数判断整数的个位数字是不是1.如果这个数字大于10,

2016-10-05 15:56:28 2085

原创 剑指offer:连续子数组的最大和(java)

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)      例如输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和18。     看到该题目,很多人都能想到最直观的方法,即枚举出数组的所有子数组并求出他们的和。一个长度为n

2016-10-05 14:34:47 695

原创 剑指offer:最小的k个数(java)

题目:输入n个整数,找出其中最小的k个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4解法一:O(n)的算法,只有当我们可以修改输入的数组时可用从上一题中我们可以得到启发,我们同样可以基于Partition函数来解决这个问题。如果基于数组的第k个数字来调整,使得比第k个数字小的所有数字都位于数组的左边,比第k个数字大的所有数字都位于数组的右

2016-10-04 16:30:55 800

原创 剑指offer:数组中出现次数超过一半的数字(java)

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现5次,超过数组长度的一半,因此输出2.   最直观的解法是对数组排序,然后我们就能很容易统计每个数字出现的的次数。由于排序的时间复杂度是O(nlogn),该算法的时间复杂度是O(nlogn)并不能让面试官满意。解法一:基于Par

2016-10-04 16:19:58 345

原创 剑指offer:字符串的组合(java)

字符串的组合:    给一个字符串,比如ABC, 把所有的组合,即:A, B, C, AB, AC, BC, ABC, 都找出来。    解题思路:    假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;二是不把这个字符放到组合

2016-10-04 15:51:28 2696

原创 剑指offer:字符串的排列(java)

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印由字符a,b,c所能排列出来的所有字符串:abc,abc,bac,bca,cab,cba  我们求整个字符串的排列,可以看成两步:首先求出所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。第二步固定第一个字符,求后面所有字符的排列。这个时候我们仍把后面的所有字符分成两部分:后面字符的

2016-10-03 22:39:58 1648

原创 剑指offer:二叉搜索树与双向链表(java)

题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建新的结点,只能调整树中结点指针的指向。比如如下图中的二叉搜索树,则输出转换之后的排序双向链表为:    由于要求转换之后的链表是排好序的,我们可以中序遍历树的每一个结点,这是因为中序遍历算法的特点是按照从小到大的顺序遍历二叉树的每一个结点。当遍历到根结点的时候,我们把树看成三部分:值为10的结点、

2016-10-03 22:12:04 1297 2

原创 剑指offer:复杂链表的复制(java)

题目:请实现函数ComplexListNode复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任意结点或者NULL;   下图是一个含有5个结点的该类型复杂链表。图中实线箭头表示m_pNext指针,虚线箭头表示m_pSibling指针。为简单起见,指向NULL的指针没有画出。

2016-10-03 21:26:54 985

原创 剑指offer:二叉树中和为某一值的所有路径(java)

题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的所有的结点形成一条路径。如下图,输入二叉树和整数22,则打印出两条路径,第一条路径包含结点10,12,第二条路径包含的结点为10,5,7.     由于路径是从根结点出发到叶结点,也就是说路径总是以根结点位起始点,因此我们首先需要遍历根结点,也就是按照前

2016-10-03 20:39:43 2375

原创 剑指offer:二叉搜索树的后序遍历序列(java)

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。    例如输入数组{5,7,6,9,11,10,8}则返回true,如果输入的数组是{7,4,6,5},由于没有哪颗二叉搜索树的后续遍历的结果是这个序列,因此返回false。   后序遍历得到的序列中,最后一个数字是树的根

2016-10-03 20:27:09 367

原创 剑指offer:往上到下打印二叉树(java)

题目:从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入二叉树:      8    /  \   6    10  /\     /\ 5  7   9  11则一次打印出8,6,10,5,7,9  打印过程如下:先打印根结点,为了接下来能够打印8的结点的两个子结点,我们应该在遍历到该结点时把值为6和10的两个结点保存到一个

2016-10-03 20:07:34 340

原创 剑指offer:栈的压入、弹出序列(java)

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。    解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字依次压入该辅助栈,并按照第二个序列

2016-10-03 19:21:19 371

原创 剑指offer:包含min函数的栈(java)

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).    看到这个问题,我们的第一反应可能是每次压入一个新元素进栈时,将栈里的所有元素排序,让最小的元素位于栈顶,这样就能在O(1)时间得到最小元素了。但这种思路不能保证最后压入的元素能够最先出栈,因此这个数据结构已经不是栈了。    我们接着

2016-10-03 18:44:43 567

原创 剑指offer:顺时针打印矩阵(java)

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1,2,3,45,6,7,89,10,11,1213,14,15,16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.    由于是从外圈到内圈的顺序依次打印,我们可以把矩阵想象成若干个圈,如图所示。

2016-10-02 23:02:17 2306 1

原创 剑指offer:二叉树的镜像(java)

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像如图所示:右边的二叉树就是左边的树的镜像上述树求镜像的步骤如下:我们先前序遍历这个树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。public void MirrorRecursively(BinaryTreeNode node){

2016-10-02 20:27:22 343

原创 剑指offer:树的子结构(java)

题目:输入两棵二叉树A和B,判断B是不是A的子结构。例如图中所示的两棵二叉树,由于A中有一部分子树的结构和B 是一样的,因此B是A的子结构。要查找树A中是否存在和树B结构一样的子树,思路是第一步:先在树A中查找与根结点的值一样的结点,这实际就是树的先序遍历,当树A和树B为空时,定义相应的输出。如果树A某一结点的值和树B头结点的值相同,则调用doesTree1HaveTr

2016-10-02 20:13:21 1110

五子棋.zip

带界面 可互相下棋的AI 不是必胜 而是高胜率成长AI,javascript语言,不依赖jdk 轻量级

2019-07-19

空空如也

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

TA关注的人

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