算法
学习算法过程中的思考和总结,不断探索和尝试才是学习的本源。
LUK流
大数据/java web
展开
-
(10)矩形覆盖
1.问题我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?2.思路当target = n上图中,如果填充第一个2n(绿色)的如图所示,那么就变成了RectCover(n-1)问题下图中,如果填充第一个2n(绿色)的如图所示,那么第二块砖必定是蓝色的砖块,问题变成了RectCover(n-2)问题.3.代码pa...原创 2019-04-21 15:37:08 · 132 阅读 · 0 评论 -
(9)变态跳台阶
1.问题一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2.思路1.JumpFloorII(0)=12.JumpFloorII(1)=13.JumpFloorII(2)=JumpFloorII(0)+JumpFloorII(1)4.JumpFloorII(n)=JumpFloorII(0)+JumpFloorII(1)+Ju...原创 2019-04-21 12:45:42 · 101 阅读 · 0 评论 -
(8)跳台阶
1.问题一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。2.思路1:第一个阶台阶:return JumpFloor(0)表示从第0阶台阶跳上来2.第二阶台阶:return JumpFloor(0)+JumpFloor(1)表示从第0阶台阶跳上了和第一阶台阶跳上来3.第n阶台阶:return JumpFloor(targ...原创 2019-04-21 12:39:51 · 110 阅读 · 0 评论 -
(7)斐波那契数列
1.问题大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=392.思路当前的数据等于前两个数据值和。即return Fibonacci(n-1) + Fibonacci(n-2)即可3.代码package test1_10;/* * @author qianliu on 2019/4/10 14:27 * @Disc...原创 2019-04-20 21:02:22 · 290 阅读 · 0 评论 -
(6)旋转数组最小数字
1.问题把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。2.思路因为所有的数据有类似345122这样的数据规则,最小值1前面的数据部分大于后面的所有数据使用二分法,...原创 2019-04-20 20:59:26 · 260 阅读 · 0 评论 -
(4)重新二叉树
1.题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2.思路(1)由先序可知,当前第一个元素A的是当前前子树的根节点(2)从中序查找A,A前面的元素都是当前的左子树,A右边的元素都是右子树3.代码...原创 2019-04-08 14:18:26 · 97 阅读 · 0 评论 -
(5)两个栈实现队列
1.问题用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2.思路(1)加入的数据都放入stack1中(2)取数据时,如果stack2中有数据就直接stack2.pop()取走数据,如果stack2中没有数据,就将stack1中的数据全部加入到stack2中以后再从stack2中取数据。3.代码package test1_10;import ja...原创 2019-04-08 15:10:28 · 147 阅读 · 0 评论 -
(3)从尾到头打印链表
1.题目输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。2.思路遍历链表放入到一个arraylist.然后反转arraylist3.代码package test1_10;import java.util.ArrayList;import java.util.Collections;public class test3 { public static vo...原创 2019-04-01 15:41:03 · 97 阅读 · 0 评论 -
(2)替换空格
1.题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2.思路正则表达式进行字符串的替换3.代码package test1_10;import java.util.regex.Matcher;import java.util.regex.Pattern;/* * @...原创 2019-04-01 15:37:03 · 92 阅读 · 0 评论 -
(1)二维数组的查找
1.题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2.思路1.对第一列的数据遍历,发现index的数据小于target,index+1行的数据小于target,那么在index从头到尾查找数据2.否则从第二列开始查找对应的index行…n...原创 2019-04-01 15:33:05 · 118 阅读 · 0 评论 -
ccf考试201712_2之游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时...原创 2019-03-13 15:04:43 · 318 阅读 · 0 评论 -
ccf考试201812_1之URL映射
问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。输入格式 输入第一行包含一个整数n。 第二行包含n个正整数,相邻整数之间使用一个空格分隔。输出格式 输出一个整数,表示答案。样例输入51 5 4 8 20样例输出1样例说明 相差最小的两个数是5和4,它们之间的差值是1。样例输入59 3 6 1 3样例输出0样例说...原创 2019-03-13 13:37:27 · 260 阅读 · 0 评论 -
ccf考试201803_3之URL映射
问题描述 URL 映射是诸如 Django、Ruby on Rails 等网页框架 (web frameworks) 的一个重要组件。对于从浏览器发来的 HTTP 请求,URL 映射模块会解析请求中的 URL 地址,并将其分派给相应的处理代码。现在,请你来实现一个简单的 URL 映射功能。 本题中 URL 映射功能的配置由若干条 URL 映射规则组成。当一个请求到达时,URL 映射功能会将...原创 2019-03-13 13:33:43 · 192 阅读 · 0 评论 -
ccf考试201803_2之碰撞的小球
问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。 当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。 当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。 ...原创 2019-03-09 13:05:24 · 152 阅读 · 0 评论 -
ccf考试201803_1之跳一跳
问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…)。 现...原创 2019-03-08 21:21:56 · 145 阅读 · 0 评论 -
ccf考试201809_3元素选择器
代码评分:40总结:(1)还是那个意思,如果在较短的时间内拿到差不多的分数就够了,其他时间可以放在第4题上面试试能不能也拿几十分。import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(S...原创 2019-03-08 16:34:15 · 166 阅读 · 0 评论 -
ccf考试201812_4之数据中心
样例输入4511 2 31 3 41 4 52 3 83 4 2样例输出4样例说明 下图是样例说明。代码评分:20总结:(1)这个题目的难度就在于kruskal算法的编写以及优化。可以看出,我们只需要直接找出kruskal的最小生成树,然后找出树中最大的边即可。(2)至于为什么评分这么低,可以通过代码的评分细则可以知道,都是因为超时惹的祸,代码做出来以后系统的...原创 2019-03-07 16:55:30 · 232 阅读 · 0 评论 -
ccf考试201809_2之买菜
问题描述 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车。具体的,对于小H来说有n个不相交的时间段[a1,b1],[a2,b2]…[an,bn]在装车,对于小W来说有n个不相交的时间段[c1,d1],[c2,d2]…[cn,dn]在装车。其中,一个时间段[s, t]表示的是从时刻s到时刻t这段...原创 2019-03-07 14:46:46 · 360 阅读 · 0 评论 -
ccf考试201809_1之卖菜
问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。 注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商...原创 2019-03-07 14:21:10 · 137 阅读 · 0 评论 -
ccf考试201812_3之 CIDR合并
代码评分:60总结:考场中这种代码的工程量很大,需要不断地调试很费时间,不如得一部分分数就放手import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class test2 { public static void main(String[] args) { ...原创 2019-03-06 14:52:36 · 863 阅读 · 0 评论 -
ccf考试201812_2之小明放学
题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。问题描述 一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,...原创 2019-03-06 14:49:26 · 173 阅读 · 0 评论 -
ccf考试201812-1之小明上学
题目背景 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。 京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒,那么从 0 时刻起,[0,r) 秒内亮红...原创 2019-03-06 14:45:15 · 191 阅读 · 0 评论 -
brent算法为什么比floyd算法快
floyd以龟兔赛跑来解释这一算法,寻找单链表中是否含有一个圈。一、思想:龟和兔子同时出发,龟走一步,兔子走两步,兔子比龟快,所以兔子一定可以追上龟,就好像在环形跑道中跑的快的运动员会从后面超过跑得慢的运动员。龟兔的行走距离差,恰好是龟的行近距离,龟的行近距离即是循环的倍数。二、尋找循環起點:龜退回起點,兔原地待命,龜兔同時出發,龜走一步、兔走一步。龜兔相遇之處即是循環起點。三、尋找...原创 2019-01-21 22:32:58 · 2336 阅读 · 1 评论 -
初识协同过滤算法,以及hadoop中Mahout实现
1.推荐系统简介推荐系统广泛存在于各类网站中,作为一个应用为用户提供个性化的推荐。它需要一些用户的历史数据,一般由三个部分组成:基础数据、推荐算法系统、前台展示。基础数据包括很多维度,包括用户的访问、浏览、下单、收藏,用户的历史订单信息,评价信息等很多信息;推荐算法系统主要是根据不同的推荐诉求由多个算法组成的推荐模型;前台展示主要是对客户端系统进行响应,返回相关的推荐信息以供展示。基础数据主...原创 2019-01-15 15:39:02 · 922 阅读 · 0 评论 -
关于常见大数据算法以及思考
给定a、b两个文件,每个文件中有海量的数据,内存不足,让你找出a、b文件共同数据?思考:(1) 布隆过滤器:在输入数据时就将a文件的所有的数据的hashcode映射到一个集合(这里假设是一个数组arr[max]),此时b文件每次读取一条数据就计算出它的hashcode,加入此时为i,去数组中查找arr[i],如果arr[i]存在,则表示a文件中也有这个数据。缺点:如果两个数据的hashco...原创 2019-01-15 14:24:19 · 500 阅读 · 0 评论 -
a[i]=a[i+1]+a[i-1]-a[i]求最大值
题目:有一个长度为n的实数数组a,可以进行任意轮的操作,每一轮选择一个i(0<i<n-1),操作为a[i]=a[i+1]+a[i-1]-a[i],最终a[0]+a[2]+…+a[n-1]最大可以是多少?分析:题目的难点不是编码的问题,而是数据证明怎么样可以得到这样a[0]+a[2]+…+a[n-1]最大值问题。证明如下:...原创 2019-01-15 12:51:59 · 1554 阅读 · 0 评论 -
手撕:线性回归
1.一元线性回归2.多元线性回归原创 2018-12-30 13:36:17 · 312 阅读 · 0 评论