阿里笔试0315算法+研发岗 一句话题解
算法岗
第一题,考察贪心,排序之后大的数乘x,小的数加x。
第二题,考察位运算,从高到低分别讨论n的每一位,是1则一个0一个1,第一个分配1的为大数,后面的1全分配给小的数;是0则无影响。
第三题,考察二维前缀和,容易发现走k步一定为一个正方形内的所有奇数点或者所有偶数点,二维前缀和后即可O(1)查询。
研发岗
第一题,考察二叉树。建树后dfs,一个节点为满二叉树当且仅当该节点为叶子,或该节点的左右孩子均为深度相等的满二叉树。
第二题,考察stl和组合数学。我们把所有元素存入map,分别统计形如[1,1,2]和[1,2,2]的三元组数量即可。
第三题,考察贪心。开三个multiset,先假设使k个最小数乘2,扔进第一个multiset,其余数扔进第二个multiset,然后反悔贪心,不断取第一个multiset里的最大值除2然后放回第二个multiset,同时在第二个multiset里取最大值除2放进第三个multiset,维护三个multiset的最大值减最小值即可。#阿里巴巴2024春招#
第一题,考察贪心,排序之后大的数乘x,小的数加x。
第二题,考察位运算,从高到低分别讨论n的每一位,是1则一个0一个1,第一个分配1的为大数,后面的1全分配给小的数;是0则无影响。
第三题,考察二维前缀和,容易发现走k步一定为一个正方形内的所有奇数点或者所有偶数点,二维前缀和后即可O(1)查询。
研发岗
第一题,考察二叉树。建树后dfs,一个节点为满二叉树当且仅当该节点为叶子,或该节点的左右孩子均为深度相等的满二叉树。
第二题,考察stl和组合数学。我们把所有元素存入map,分别统计形如[1,1,2]和[1,2,2]的三元组数量即可。
第三题,考察贪心。开三个multiset,先假设使k个最小数乘2,扔进第一个multiset,其余数扔进第二个multiset,然后反悔贪心,不断取第一个multiset里的最大值除2然后放回第二个multiset,同时在第二个multiset里取最大值除2放进第三个multiset,维护三个multiset的最大值减最小值即可。#阿里巴巴2024春招#