阿里巴巴24号实习笔试

第一道题:
牛牛喜欢跳格子,希望我帮他计算出跳n个格子的最大值,
题意:
有n个格子,跳1格只能拿跳到的那一格的一半分(如果不能整除则向上取整),跳2格可以拿第2格的全部分,问跳n格最多能拿多少分。
第二道题:
给你二叉树的权值,前序遍历以及中序遍历的值,还原出二叉树,且找出子树中对称的且权重最大的子树,输出其全职。

#笔试题目##阿里巴巴#
全部评论
第一题 阅读理解 第二题 构建二叉树,判断是否轴对称,取最大的权值和。 第一题向上取整,读题不清,折腾了好久,第二题到最后一步了,没写完。😣
2 回复 分享
发布于 2021-03-24 14:44
早知道写完第一题回去睡觉好了
2 回复 分享
发布于 2021-03-24 10:06
第一题最后想出来一个办法,但是没时间了没写完,大佬能帮我看看这个能过吗? int main() {     int T;     cin >> T;     //遍历所有测试用例     for (int i = 0; i < T; i++) {         int n;         cin >> n;         int a, b;         if (n == 1) {             cin >> a;             cout << a << endl;             continue;         }         cin >> a;         if (n == 2) {             cin >> b;             b = a + (b + 1) / 2;             cout << b << endl;             continue;         }         cin >> b;         b = a + (b + 1) / 2;         int c = 0;         for (int i = 2; i < n; i++) {             cin >> c;             c = max(b + (c + 1) / 2, a + c);             a = b;             b = c;         }         cout << c << endl;     }     return 0; }
点赞 回复 分享
发布于 2021-03-24 16:13
按照通过的用例比例算分数吗
点赞 回复 分享
发布于 2021-03-24 16:07
只写了第一题
点赞 回复 分享
发布于 2021-03-24 14:16
老是提示越界0%咋整,平时牛客acm没遇到过这问题呀😵
点赞 回复 分享
发布于 2021-03-24 14:06
看这个比例今天题算偏简单得,平均成绩都接近AC1了😂
点赞 回复 分享
发布于 2021-03-24 13:21
第一题  ``` package main; import java.util.*; public class Main{     public static void main(String args[]){         Scanner in = new Scanner(System.in);         int T = in.nextInt();         while (T-->0){             int n = in.nextInt();             int[] nums = new int[n];             for (int i = 0; i < n; i++) {                 nums[i] = in.nextInt();             }             int res = maxScore(nums);             System.out.println(res);         }     }     public static int maxScore(int[] nums){         int len = nums.length;         int[] dp = new int[len+1];         dp[0] = 0;         dp[1] = nums[0];         for (int i = 2; i <= len; i++) {             if(i == 2){                 dp[i] = Math.max(dp[i-1]+nums[i-1]/2,dp[i-2]);             } else {                 dp[i] = Math.max(dp[i-1]+nums[i-1]/2,dp[i-2]+nums[i-1]);             }         }         return dp[len];     } } ```
点赞 回复 分享
发布于 2021-03-24 10:46
第二题其实就是lc101和105的叠加。。。可惜当时时间来不及debug了,只ac了10%
点赞 回复 分享
发布于 2021-03-24 10:19
有没有大佬贴个代码
点赞 回复 分享
发布于 2021-03-24 10:19
第一题case 0分,自测感觉没啥问题。。。时间全花在上面了。。。
点赞 回复 分享
发布于 2021-03-24 10:06

相关推荐

点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务