策略设计模式 面向对象的好处,是通过封装/继承/多态实现程序的高内聚低耦合,而设计模式可以使得程序更加灵活,容易扩展,并且易于复用.策略模式是一种定义一系列算法,并将每一个算法封装起来,而且使他们可以相互替换,此模式让算法的变化,不会影响到使用算法的客户.Strategy:定义了所支持算法的公共接口StrategyA:封装了具体的算法或行为,继承于StrategyContext:初始化时,进行策...
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...
原型设计之Axure实战教程(二) 一、Axure的工作环境一、菜单和工具栏常用操作:文件打开、保存、撤销、重做、格式刷、输出原型、输出规格等操作二、页面导航面板可调整需要展示页面的层次和顺序,以用户注册为例,如下图 三、元件面板1、形状类基本形状为矩形,点击三角形可调整圆角,点击圆点可选择其他形状如心型、圆形等2、图片、占位符以及按钮类图片是可直接填入的图片,而占位符代表需要设计师设计的展示图片或者图标,按钮可以响应各种用户行为进...
原型设计之Axure实战教程(一) 一、原型设计软件介绍为什么要进行原型设计?大约66%的软件开发失败或亏损的前三大原因为: — 缺乏使用者参与 — 需求或规格不完整 — 需求或规格变更是一种高效的以用户为中心的技术,是个有效的简化文档编制、吸引使用者参与、早期辨认需求遗漏、将外在需求风险降到最低的方法。全球>1000家公司使用Axure RP,淘宝、雅虎、腾讯、当当等都在使用二、Axure R...
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...
剑指offer:不用加减乘除做加法(java) 题目:写一个函数,求两个整数之和,要求在函数体内不得适用+,-,* ,./ 四则运算符号 面试的时候被问道这个问题,首先我们分析人们是如何进行十进制的加法的,比如如何得出5+17=22这个结果的,实际上,我们可以分三步进行:第一步只做各位相加不进位,此时相加的结果是12,第二步做进位,5+7中有进位,进位的值为10;第三步,把前面的两个结果加起来12+10的结果是22,刚好5+17
剑指offer:求1+2+...+n(c/c++) 题目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句 这个问题本身没有太多的实际意义,但不少面试官认为这是一道不错的考查应聘者发散思维能力的题目,而发散思维能够反映出应聘者知识面的宽度,以及对编程相关技术理解的深度。 求1+2+...+n除了用公式n(1+n)/2之外,无外乎循环和递归两种思路,由于明确限制
剑指offer:圆圈中最后剩下的数字(java) 题目:0,1,,,,,n-1这n 个数字排成一个圆圈,从数字0开始每次从这个圆圈中删除第m个数字。求出这个圆圈里剩下的最后一个数字. 例如,0,1,2,3,4这5个数字组成的一个圆圈,从数字0开始每次删除第3个数字,则删除的前四个数字依次是2,0,4,1因此最后剩下的数字是3. 本题就是著名的约瑟夫环的问题。我们介绍两种方法:一种方法是用环形链表模拟圆圈的经典解法,第二
剑指offer:扑克牌的顺子(java) 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13. 思路:随机抽的5张牌可以看成5个数字组成的数组,大、小王是特殊的数字,不妨定义为0.接下来只要判断5个数字是不是连续的。最直观的方法是排序,然后用0去补满数组中的空缺。如果排序后的数组不是连续的,即相邻的两个数字都相隔若干个数字,但只要我们有足够的0可以补
《数据挖掘 —— 从入门到求职》 最近秋招也已经慢慢接近尾声了,从去年 8 月底开始,先后参加了 datacastle ,阿里天池,牛客网各自举办的数据挖掘比赛(都是 top10 ),今年 4 月份又先后去百度,腾讯实习,到现在秋招快结束,也将近一年的时间,最终拿到手的比较有分量的 offer 主要是腾讯,百度,华为三家企业的 offer ,都是 sp,下面就将过去一年的一些经验做一下小总结,不一定是最合适的方法,但是当毫无头绪的
剑指offer:n个骰子的点数(java) 题目:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。 骰子一共6个面,每个面上都有一个点数,对应的是1-6之间的一个数字。所以n个骰子的点数和的最小值是n,最大值为6n.另外根据排列组合的知识,我们还知道n个骰子的所有点数的排列数为6^n.要解决这个问题,我们需要先统计出每一个点数出现的次数,然后把每一个点数出现的次数除以6^n,就能求出每
剑指offer:翻转单词顺序VS左旋转字符串(java) 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串为“I am a Student.",则输出为”Student. a am i". 这个题目是流传甚广,很多公司都多次拿来作为面试题,很多应聘者也多次在各种博客或者书籍上见到过通过两次翻转字符串的解法,于是很快可以跟面试官说出自己的思路:第一步反转句子中所有的
剑指offer:和为s的两个数字VS和为s的连续正数序列(java) 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多个数字的和等于s,输出任意一对即可。例如输入数组{1,2,4,7,11,15}和数字15.由于4+11=15,因此输出4和11. 只要想到一个办法,应聘者就可以立马告诉面试官,即使这个办法不一定是最好的。比如这个问题,很多人会立即能想到O(n2)的方法,也就是先在数组中固定一个数字,
剑指offer:数组中只出现一次的数字(java) 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请些程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1). 如输入数组{2,4,3,6,3,2,5,5},因为只有4,6这两个数字只出现一次,其他数字都出现了两次,所以输出4,6 这是一个比较难的题目,很少有人在面试的时候不需要提示一下子想到最好的解决办法。一般当应聘者想了几分钟
剑指offer:判断二叉树是不是平衡二叉树(java) 题目:输入一棵二叉树的根节点,判断该树是不是平衡的二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差不超过1,按照定义它就是一棵平衡的二叉树。这种思路实现的代码如下:
剑指offer:二叉树的深度(递归&&非递归)(java) 题目:输入一棵二叉树的根节点,求该数的深度。从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。例如,如下图的二叉树的深度为4,因为它从根节点到叶结点的最长的路径包含4个结点(从根结点1开始,经过2和结点5,最终到达叶结点7) 如果一棵树只有一个结点,它的深度为1,如果根节点只有左子树而没有右子树,那么树的深度应该是其左子树的
剑指offer:数字在排序数组中出现的次数(java) 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组为{1,2,3,3,,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4 既然输入的数组是排序的,那么我们很自然的想到利用二分查找算法。在题目给出的例子中,我们可以先用二分查找算法找到第一个3.由于3可能出现多次,因此我们找到的3的左右两遍可能都是3,于是我们在找到3的左右两边顺序扫描,分别找出第一个3
剑指offer:两个链表的第一个公共结点(java) 题目:输入两个链表,找出它们的第一个公共结点。 思路:首先遍历两个链表得到他们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结点。在第二次遍历的时候,在较长的链表上先走若干步,接着再同时在两个链表上遍历,找到第一个相同的结点就是他们的第一个公共结点。 public ListNode findFirstCommonNode(ListNode root1,ListNode
剑指offer:数组中的逆序对(java) 题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数例如在数组{7,5,6,4}中,一共存在5对逆序对,分别是{7,6},{7,5},{7,4},{6,4},{5,4}。 看 到这个题目,我们的第一反应就是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数