0坚持算法
‘壹’ 阿里面试官:恕我直言,搞懂这10道算法题,轻松拿20K不是问题
01打怪兽
难度:容易
现在有3只怪兽,他们的都有自己的血量a,b,c(1<=a,b,c<=100),当Tom打死第一怪兽的时候花费的代价为0,其余的怪兽的代价为当前的怪兽的血量减去上一个怪兽的血量的绝对值。问Tom打死这些怪兽所需要的最小代价
02数组变换
难度:中等
给出一个长度为 n 的数组,和一个正整数 d。 你每次可以选择其中任意一个元素 a[i] 将其变为 a[i] + d 或 a[i] - d,这算作一次操作。你需要将所有的元素全部变成相等元素,如果有解,请输出最小操作次数,如果无解请输出-1。
01超级区间
难度:中等
Tom现在有一个长度为n的数组,Jerry给Tom定义了一种超级区间,如果区间[l,r]满足(a[l]+…+a[r])>=k,则区间[l,r]被称为超级区间,现在Jerry想让Tom告诉他数组中有多少个超级区间。
02能量半径
难度:中等
codancer来到了一个能量平面上的中心,坐标为(0,0),接下来巫师Tom会在q个坐标上放置能量点,每个能量点的能量值为1,为了打败哥斯拉,他需要至少k点的能量,因此他想确定一个最小的整数半径r使得codancer能够从这个圆心为(0,0),半径为r的圆形区域内得到至少k个能量值,请你帮他确定最小的整数半径r。
01找出二叉搜索树的第2大的数
难度:容易
给定一个二叉搜索树,找出其第二大的数。
02字符配对
难度:中等
给你一个字符串,字符串中仅包含"A","B",现在有四种字符串"AA","AB","BA","BB",每种字符串都有他们的权值,问从给出的字符串中能够得到的最大权值为多少(一个字符只能属于一个子字符串)?
01斐波那契字符串
难度:中等
Tom发现了一种神奇的字符串-斐波那契字符串,定义f[1]=0,f[2]=1,对于所有的i>2都有f[i]=f[i-2]+f[i-1],其中“+”代表拼接,比如01+10=0110,现在对于字符串f[n],请判断f[n]的第k项是0,还是1?
01Hikari and Interstellar Experience
难度:容易
在无垠的宇宙中,有 n 个星球,第 i 个星球有权值vi 。由于星球之间距离极远,因此想在有限的时间内在星际间旅行,就必须要在星球间建立传送通道。 任意两个星球之间均可以建立传送通道,不过花费并不一样。 第 i 个星球与第 j 个星球的之间建立传送通道的花费是lowbit(vi ⊕ vj) ,其中⊕为二进制异或,而lowbit(x)为 x 二进制最低位的值,例如lowbit(5) = 1,lowbit(8) = 8 。 特殊地,lowbit(0) = 0。 Hikari 想在这 n 个星球间穿梭,于是――你需要告诉 Hikari,要使这 n 个星球相互可达,需要的花费最少是多少?
02二进制字符串
难度:中等
Tom得到了一个二进制字符串s,即s只由Ɔ'和Ƈ'组成,现在令d(t)代表二进制字符串t在十进制下的值。 那么d(“011”)=3,d(“0001000”)=4,如果t的长度等于d(t),那么就称t是奇妙串,现在Tom想知道s中有多少个子串是奇妙串?
01小明的数学作业
难度:容易
众所周知,小明是一个数学小能手,有一天数学老师给了小明一个长度为n(2<=n<=5000)的序列,其中第i个数是ai(0<=ai<=1e9),数学老师想知道这个序列排序后,其中最长的等差子序列的长度是多长,聪明的你能帮小明解决这个问题吗?
02Codancer上楼
codancer来到了一栋大楼前,现在他要上楼。
如果codancer从第x层走楼梯到第y层(y>x),那么他所花费的时间是a[x]+a[x+1]+…+a[y];
如果他从x层坐电梯到第y层,那么他所花费的时间是c+(b[x]+b[x+1]+…+b[y]),因为他等电梯的时间为c。
现在codancer想知道从第1层到第n层需要最少需要多长时间?
01变换的秘钥
难度:中等
Tom最开始有一个密钥s1,s1是长度为n的由小写字母组成的字符串。Jerry也有一个长度为n的由小写字母组成的密钥s2。现在有m组关系,每组关系由两个数字[u,v]构成(1<=u,v<=26),表示26个字母表中的第u个小写字母可以直接转换为第v个小写字母。假设u=1,v=2,那么说明字母'a'可以直接转换为字母'b'。现在Tom对于s1的每个字母使用无数次转换,请判断s1能否转换为s2?
01最大边权和
难度:简单
现在有n个点(1<=n<=1000),每个点都有一个值称为点权ai(ai为偶数,1<=ai<=1000),现在可以将任意两个点相连,连起来以后这条边也有一个值称为边权,这个边的边权为这两个点的点权之和的一半。现在需要你添加n-1条边,问将这n个点连通以后(连通是指任意两个点都能互相到达)的最大的边权和是多少?
02钱庄
难度:中等
钱庄每天能够收到很多散钱,第i个散钱的值2 wi。为了便于管理,钱庄每天都会向中央银行申请兑换钱币,假设钱庄有一些散钱使得2 k1+2 k2+...+2 km=2^x(x为非负整数),那么就可以将这些散钱兑换成一个大钱币,问在钱庄收到的这些散钱最终最少能变成几个钱币?
01codancer的旅行
难度:困难
期末考试终于结束啦,Codancer开始了他的旅行,现在整个地图上有n个城市,这些城市之间有n-1条道路相连,每条道路都有一个距离,并且保证整个图是连通的,即这个地图可以看作是一棵树,现在假设Codancer要从城市A到城市B,那么他的路费就是从A-B的路径上边权最大的边的权值wmaxx元。现在Codancer有k元,他想知道他能选择那些(A,B)并且A<B使得codancer能够到达?
HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。
01全奇数组
难度:中等
codancer现在有n个正整数a[1],a[2]…a[n],Tom告诉codancer他可以进行下列操作,选择某个偶数x,把这n个数中全部等于x的数字除2,Tom想知道把这n个数字全部变成奇数最少需要几次这样的操作?
以上十道算法题你都能搞定嘛?备战大厂每日刷一道算法题来提升自己,坚持坚持再坚持,必然会有收获。为大家整理一份781页的高分宝典,知识较为全面,可分享给想要学习提升自己的朋友。
领取方式:私信【面试宝典】或点击右方链接: https://shimo.im/docs/QVy8HrQgPYkx9Ddg/ 即可免费领取,喜欢本文不妨关注+转发支持一下~~
‘贰’ 产品经理怎样设计0元砍单算法
砍价是诞生在社交电商的时代,是社交电商最常见的几种玩法之一,目的都是低成本获客,在完成拉新及留存的作用的基础上,实现粉丝裂变增长的商业目标。
前两年砍价模式让拼多多高速增长,并超过其他同类产品,最快速的吃下了微信的社交红利。对于砍价活动的玩法,相信大家都不陌生,即用户选择心仪商品发起砍价活动,分享给多个好友后,通过好友的助力,使商品价格不断降低。
当足够人数的好友助力砍价后,砍到商品最低价格后,用户可以按照此价格下单,获得该商品。同时帮助该用户砍价的好友,看到此活动后,也可以自己发起砍价,邀请更多人参与到砍价活动中,实现以社交圈子为中心,聚合人,人拉人、人向人层层递进地卖货的目的。
1. 活动设置
设置砍价活动时,一般情况分2个部分设置:基础规则设置,活动商品设置。
(1)基础设置一般包含以下信息
1)活动名称
根据砍价活动参与的时间段或者目的的不同,根据具体活动情况直接设置砍价活动名称,相比去商品详情中进行修改要方便快捷,也更易于活动的管理,比如说常见的按活动时间设置砍价活动名称:双十一XXX商品砍价活动。
2)活动时间
商品参加砍价的活动时长,即砍价活动的开始时间和结束时间,只要在设置的时间范围内,用户进入商品详情页时均可主动发起砍价活动。
3)砍价有效期
发起者发起砍价后,在有效期内邀请足够好友进行砍价则砍价成功,若超出有效期,则锁定当前砍价金额。自定义有效期须大于1分钟且小于等于30天。创建后,买家可在砍价详情页看到有效期倒计时。
砍价活动时间和砍价有效期的关系:
活动时间范围内,支持消费者在小程序端发起砍价活动;
砍价有效期优先级大于活动时间。即当活动时间小于砍价有效期时,以砍价有效期为准。即:商家设定的活动时间为砍价可发起的时间,若用户发起砍价后,活动结束,但砍价有效期未结束,种子用户仍可继续邀请好友砍价。
4)帮砍人数
设置目标帮砍人数,即最多支持多少人帮忙砍一刀。
5)帮砍金额
设置目标帮砍金额,即当完成目标帮砍人数时,最多支持砍掉多少钱。
6)活动预热
支持设置活动预热时间,开启后,商品详情页在活动开始前X小时,展示未开始的砍价活动,但活动开始前用户仅能看到此商品即将参与活动,但是无法直接发起砍价。不配置时默认此活动不预热,直到活动开始时才会出现砍价活动。
2. 活动管理
砍价活动商品创建成功后,砍价活动列表对应新增一条活动记录。活动的管理即是对活动状态的管理,砍价活动的状态有:未提交,未开始,进行中,已结束,已终止5个状态。