考点介绍:
智力是使人能顺利完成某种活动所必需的各种认知能力的有机结合,它包括观察力、记忆力、注意力、想象力和思维力等成分,并以思维力为核心。智力分析题在前端算法考察中是比较重要的一部分,需要掌握哦。
本期分享的前端算法考点之智力分析,分为试题、文章以及视频三部分。
答案详情解析和文章内容可扫下方二维码或链接即可查看!
一、考点题目
1、一个容量无限的水龙头,两个容量确定的杯子,一个4升,一个9升,如何倒出6升水?
解答: 将9升杯子倒满,倒入4升的杯子中,此时9升杯子中剩余5升,将4升杯子倒掉,再将9升杯子剩余的水倒入4升杯子,此时9升杯子中剩余1升水,将4升杯子倒掉,9升杯子中剩余1升倒入4升杯子中,此时9升杯子水为0,4升杯子中还有1升水。
此时将9升杯子倒满,倒入4升杯子中,由于4升杯子原本有1升水,那么9升会被倒掉3升,便得到了题目要的6升水……
2、8x8的正方形棋盘,一共有多少个正方形格子。比如1x1的棋盘,只有一个正方形,而2x2的棋盘,则有4个边长为1的小格子+1个边长为2的大正方形,一共五个。
解答: 这个题应该会感觉熟悉,记不清是小学还是初中,经常让人数来着。这个题目,多画几个,找出规律就可以解决了。
对于3x3的格子,有9个边长为1小格子,4个边长为2组成的格子,再加上最外层边长为3的大格子,也就是3x3 + 2x2 + 1 = 14
而对于4*4的格子,有16个边长为1的小格子,然后是9个边长为2的格子,再加4个边长为3的格子,再加上一个边长为4的大格子,也就是 4x4 + 3x3 + 2x2 + 1 = 30。
依次类推,8x8的棋盘,则为 8x8 + 7x7 + ... + 2x2 + 1……
3、如何快速找出一个32位整数的二进制表达里有多少个"1"?用关于"1"的个数的线性时间?
解答:
答案1(关于数字位数线性):
for(n=0; b; b >>= 1) if (b & 1) n++;
答案2(关于"1"的个数线性):
for(n=0; b; n++) b &= b-1;
4、有一个可以等概率生成随机数1-3的函数,random3,要求写出一个可以生成random7的函数,可以等概率的生成数字1-7
解答: 通过random3生成random9 step2: random9中剔除大于7,即可生成random7。
其中,第一步可能相对有点绕,如何通过random3生成random9,可以分两步:
第一步:执行一次random3,得到的结果称为a
第二步:再执行一次random3,得到的结果称为b
第三步:将第一步得到的a想像成1-9中的[1-3], [4-6], [7-9]区间,如果a为1,那么表示结果落在第一个区间,具体是1-3中的哪个数字,由数字b决定,用公示表示,即结果c = (a - 1) * 3 + b
而从random9生成random7,只需要不断循环,如果结果小于等于7,那么输出,否则再次循环,直到结果落在1-7之间输出即可。由于题目并没有要求每次生成的时间相同,而只是概率相同,这样的方法是满足题目要求的......
(答案点击下方链接或者扫海报二维码查看哦)
二、考点文章
1、【校招VIP】直通BAT面试算法---智力题2-赛马
作为一个马场的主人,你要安排你的n匹赛马和另一个马场的n匹马比赛。你已经知道了对方马场的出战表,即参加每一场的马的强壮程度。当然你也知道你自己的所有马的强壮程度。我们假定比赛的结果直接由马的强壮程度决定,即更壮的马获胜(若相同则双方均不算获胜),请你设计一个策略,使你能获得尽量多的场次的胜利……
2、【校招VIP】一道看似简单的阿里前端算法题
博主本次介绍的题目是真实来自阿里前端CBU部门招聘实习生的一道前端算法题,这道题并不是LeetCode上的找出数组中第K大的元素这道题模,而是在这道题目的基础上进行了改编,让我们一起来探索下这道题目该如何解决……
3、【整理】常见的算法(智力)题
Catalan数(n个节点的二叉树有多少个, n个元素的进栈出栈序列有多少个) 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
(扫下方海报二维码查看完整版)
三、考点视频
1、算法智力题之用一条线分割多边形为面积相等的两部分
本题考察的是分析问题的思维能力。从最小集,也就是三角形开始寻找规律,最后找到最适合本题的思路和方法……
更多资讯可搜索校招VIP小程序查看哦!
移动端链接:m.xiaozhao.vip/dTopic/deta…
PC端链接:xiaozhao.vip/dTopic/deta…