美团316笔试3,4题

第三题

当时没做出来,后面听说可以2的幂打表,按这个思路重写了一遍,但是无法验证对不对。求找bug。

#include <iostream>
using namespace std;
int main() {
    int n,q;
    cin >> n >> q;
    vector<int> arr(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
    }
    vector<int> action(n + 1, q); // 每个元素翻倍了几次
    for (int i = 0; i < q; i++) {
        int tmp;
        cin >> tmp;
        action[tmp]--;
    }
    vector<int> dir(q + 1, 1); // 2的次方打表
    for (int i = 1; i <= q; i++) {
        dir[i] = dir[i - 1] * 2 % 1000000007;
    }
    long outcome = 0;
    for (int i = 1; i <= n; i++) {
        outcome += (long)arr[i] * dir[action[i]] % 1000000007;
    }
    cout << outcome % 1000000007;
}

第四题

通过率70%,不知道怎么优化双指针。

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> arr(n + 1, 0);
    vector<int> nums_2(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
        if (arr[i] == 2) {
            nums_2[i] = nums_2[i - 1] + 1;
        }
        else {
            nums_2[i] = nums_2[i - 1];
        }
    }
    int outcome = 0;
    for (int left = 1; left <= n; left++) {  // O(n^2)
        for (int right = left; right <= n; right++) {
            int sum_2 = nums_2[right] - nums_2[left - 1];
            if (sum_2 > right - (left - 1) - sum_2) { // 如果2的个数多于1的个数
                outcome += 2;
            }
            else {
                outcome += 1;
            }
        }
    }
    cout << outcome;
}

#美团##美团笔试#
全部评论

相关推荐

下午面了美团,40Min面试,面试官人很好,也很有礼貌,面试体验非常舒服一开始聊了会儿天,聊了一些实验室的情况,最早实习时间和实习时长,然后他介绍了一下他自己那个部门(负责到店消费的,后端),还问了问开放性问题(平常面对困难怎么解决)。然后就照着简历问问题了:1.&nbsp;&nbsp;先简单介绍一下自己的项目吧,有什么技术亮点,还有自己开发的时候遇到了什么困难2.&nbsp;&nbsp;是不是练手项目3.&nbsp;&nbsp;你说对SQL语句进行了优化,这个优化体现在哪些方面呢?(我主要是针对回表的减少进行的优化)4.&nbsp;&nbsp;说一说mysql索引的优化方法吧,创建索引的原则5.&nbsp;&nbsp;mysql有哪些锁,在项目中怎么加的?6.&nbsp;&nbsp;SpringBoot的AOP原理7.&nbsp;&nbsp;SpringBoot如何解决循环依赖(忘了,私密马赛)8.&nbsp;&nbsp;Redis的数据类型(5种基本,3种特殊)9.&nbsp;&nbsp;Redis有序集合的底层数据结构10.&nbsp;如何用Redis实现分布式锁?那如何实现可重入锁呢?(我只答了setnx,但是可重入锁就不知道了)11.&nbsp;java的Synchronized和ReentrantLock的区别和联系?12.&nbsp;讲讲java的AQS(AbstractQueuedSynchronizer)吧(私密马赛,不会)13.&nbsp;java的priorityQueue的底层原理14.&nbsp;java线程池的参数配置,还有他们的作用(说的不是很清楚,还得复习一下)15.&nbsp;Java&nbsp;ThreadLocal的原理,怎么解决内存泄漏的问题16.&nbsp;volatile关键字的作用,和Synchronized的区别17.&nbsp;HashMap的底层原理,描述一下往HashMap添加元素的过程,为什么长度是2的n次方,不是会发生什么18.&nbsp;java的基本数据类型最后让我做了一道sql题目(太久没写sql语句,join语法都用错了,还好最后还是过了):两个表,一个表是员工信息表,一个表是员工薪资表,找到薪资第二多的员工的详细信息,不能使用order&nbsp;by
点赞 评论 收藏
转发
2 1 评论
分享
牛客网
牛客企业服务