饿了么暑期实习笔试(貌似每个人不一样)

三道题,一道字符串,一道思维,一道二分+前缀和

  1. 输入一个字符串,将其大写字母转为小写,小写字母转为大写。然后计算下标为奇数的ASCII码的和。

Input:

abcABC

Output:

492

Code:

#include <bits/stdc++.h>

using namespace std;
int main() {
    string s;
    cin >> s;
    int ans = 0;
    for (char c : s) {
        if (c >= 'a' && c <= 'z') ans += c - 'a' + 'A';
        else if (c >= 'A' && c <= 'Z') ans += c - 'A' + 'a';
        else ans += c;
    }
    cout << ans << endl;
    return 0;
}
  1. 给一颗树,树上的每个节点值为的整数。定义一个树的路径值,如: 等于 其中表示节点, 表示该节点的值。如果路径值包含前导0,则该路径不算。
  • 输入对表示这棵树。
  • 输出该树上所有路径值中是偶数的个数。

Input:

3
0 1 2
1 2
1 3

Output:

5

Code:

#include <bits/stdc++.h>

using namespace std;

#define LL long long

int main() {
    LL x = 0, y = 0, z = 0;
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) {
        int a;
        scanf("%d", &a);
        if (!a) ++z;
        if (a&1) ++y;
        else ++x;
    }
    while (--n) {
        int u, v; scanf("%d%d", &n, &v); 
    }
    printf("%lld\n", x * y + (x - z) * x + z);
    return 0;
}
  1. 给一个数组,小红先选择一个区间,染成红色,小蓝后选择一个区间染成蓝色。并且这两个区间不能相交。小红想让红色区间的和大于等于蓝色区间的和。
  • 输入
  • 输出小红可以选择的区间个数。

Input:

3
1 2 3

Output:

4

Code:

#include <bits/stdc++.h>

using namespace std;

#define LL long long

const int N = 2e5 + 10;

int n, a[N];
LL s[N];

LL get(int l, int r) {
    if (l > r) return 0;
    return s[r] - s[l - 1];
}

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
        s[i] = s[i - 1] + a[i];
    }
    LL ans = 0;
    for (int i = 1; i <= n; i++) {
        int l = i, r = n, f = -1;
        while (l <= r) {
            int mid = (l + r) >> 1;
            int L = get(1, i-1), M = get(i, mid), R = get(mid+1, n);
            if (M >= max(L, R)) {
                f = mid; r = mid - 1;
            } else l = mid + 1;
        }
        if (f!=-1) ans += n - f + 1;
    }
    printf("%lld\n", ans);
    return 0;
}
#饿了么笔试#
全部评论
题2为什么给的测试用例结果为5呢?想了半天没想明白
1 回复 分享
发布于 03-21 22:31 北京
请问是什么岗。
点赞 回复 分享
发布于 04-16 13:33 江苏
第三题枚举l找临界的r,随着l递增r应该是不减的,双指针可以吗
点赞 回复 分享
发布于 03-21 23:28 甘肃

相关推荐

04-17 15:29
已编辑
门头沟学院 测试工程师
自我介绍+拷打项目+一点点八股(python、java、Linux操作系统)+两道场景题+手撕代码1、拷打项目为什么不用脚本实现账户密码登录而用‌Selenium模仿用户具体操作#牛客AI配图神器#Selenium自动获取网站cookie遇到http&nbsp;only问题你是怎么解决的request库调用是否经历过卡死pyqt中的信号槽机制,为什么一定要使用信号与槽,不使用会怎么样?为什么选择测开岗位2、八股装饰器的概念、可选参数和关键字参数什么时候用幂等是什么?为什么要设计幂等、幂等的初衷是什么?可以用什么手段来做幂等java的关键字volatile是什么linux里面怎么保存和修改文件3、场景题测试用例一个用来领取奖励的接口,奖励领取有前置条件,即需要完成一个任务后才可以领取,这个奖励每天晚上12点重置,一天只能领取一次。设计一个测试用例怎么测试接口层面,不是功能层面安全方面测试一个网页,有一个输入框、输入框内输入任意的代码,然后有一个执行的按钮,点击这个按钮后可以看到输入的代码是否执行成功。点击执行后,服务器真的会运行你提交的代码,你已经知道服务器上某个路径下面有一个文件,你需要拿到这个文件的内容,你要怎么做?4、手撕代码单向链表,升序排序、力扣148算术题给定x个数据框,每个数据框内填充n个数据,把所有数据用例测试一遍要遍历多少次?#软开人,说说你的烦心事#
查看13道真题和解析 软开人,说说你的烦心事
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客企业服务