笔试时没有记题面,摘抄这位老哥的: https://www.nowcoder.com/discuss/456946?type=2&order=0&pos=1&page=1&channel=666&source_id=discuss_tag
T1
给定一个n,求 [1,n] 这 n 个数字的排列组合有多少个。
条件:相邻的两个数字的绝对值不能等于1
直接 dfs 暴搜即可
T2
长度为 n 的数组,数组中每个元素 a 满足:1<=a<=n
求连续区间的数量,要求区间中相同元素的数量 >=m
输入
n m
数组中的 n 个数字
输出
区间数量
样例
输入:
5 2
1 2 1 2 3
输出:
5
解释:
有区间 [1,3],[2,4],[1,5],[2,5],[1,4] 满足要求
1<=m<=n<=40w
历程
第一题写了不到十分钟,然后去写第二题。当时看完第二题就懵了,自己不擅长排列组合,感觉运气好差,这场无了。
仔细好久后,感觉先求区间,然后容斥?巴拉巴拉排列组合那一套?不会做...... 然后去写暴力,希望拿一些部分分数。
暴力复杂度是 n*n 的,尽可能优化常数还写了快速读入,希望多卡一些分数,然并卵,得分 0 分(暴力分都不给,太狠了)
此时距离比赛结束只有 20 分钟,脑子忽然开窍,可以卡住左端点,然后求。没有严格验证思路正确性,抓紧开写,最终在 9:56 ac 了这道题目,太惊心动魄了,感觉比上次 5.11 场的笔试题难多了。
不给部分分的话,笔试蛮需要运气的,卡一道题就是 100 分.....
思路:
先找到最左边,满足条件的最小区间,然后计算此区间收益。
再向右找到第二个区间,计算此区间的收益(不要把之前的收益算进去)。
ps:代码不会输出0.... 应该是评测数据中没有输出 0 的情况,加个判断就好了
疑惑?
阿里的面试岗位和登记的岗位不一样,这种事经常发生吗?
我同学阿里算法图形岗,但是内推投递的是阿里前端岗,进去后做图形岗事情
我之前阿里实习是开发岗,但是内推投递的是机器学习算法岗,
阿里一般都这样搞吗?为什么?
全部评论
(5) 回帖