腾讯3.21笔试(前4题全对)

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 你需要返回m个指针,第i个指针指向一条链,表示第i个问题的答案
     * @param root TreeNode类 指向链表树的根
     * @param b int整型vector 表示每个问题是什么
     * @return ListNode类vector
     */
    vector<ListNode*> solve(TreeNode* root, vector<int>& b) {
        // write code here
        vector<int> tmp[1002];
        vector<int> u;
        function<void(TreeNode*)> dfs = [&](TreeNode* cur) {
            u.push_back(cur->val);
            tmp[cur->val] = u;
            if (cur->left) dfs(cur->left), u.pop_back();
            if (cur->right) dfs(cur->right), u.pop_back();
        };
        dfs(root);
        vector<ListNode*> ret;
        for (int i = 0; i < (int)b.size(); i++) {
            ListNode* head = new ListNode(-1);
            ListNode* f = head;
            for (int u : tmp[b[i]]) {
                head->next = new ListNode(u);
                head = head->next;
            }
            ret.push_back(f->next);
        }
        return ret;
    }
};
---------------------------------------------------------------------------------------------

#include <bits/stdc++.h>

using namespace std;

int main() {
    int tt;
    scanf("%d", &tt);
    while (tt--) {
        int nn;
        scanf("%d", &nn);
        unordered_map<int,int> dp;
        queue<int> que;
        dp[nn] = 0;
        que.push(nn);
        while(!que.empty()) {
            int n = que.front(); que.pop();
            //cout << "tmp == " << n << endl;
            if (n == 0) {
                cout << dp[n] << "\n";
                break;
            }
            if (dp.count(n - 1) == 0) {
                dp[n - 1] = dp[n] + 1;
                que.push(n - 1);
            }
            if (n % 2 == 0 && dp.count(n / 2) == 0) {
                dp[n / 2] = dp[n] + 1;
                que.push(n / 2);
            }
            if (n % 3 == 0 && dp.count(n / 3) == 0) {
                dp[n / 3] = dp[n] + 1;
                que.push(n / 3);
            }
        }
    }
    return 0;
}
----------------------------------------------------------------------------------------------

#include <bits/stdc++.h>

using namespace std; 

int b[10020];
int pos[10020];

int main()
{
    int n;
    scanf("%d", &n);
    vector<vector<int>> a(n);
    for (int i = 0; i < n; i++) {
        int m;
        scanf("%d", &m);
        a[i].resize(m);
        for (int j = 0; j < m; j++) {
            scanf("%d", &a[i][j]);
        }
        sort(a[i].begin(), a[i].end());
    }
    int q;
    scanf("%d", &q);
    while (q--) {
        int p, k;
        scanf("%d", &p);
        for (int i = 0; i < p; i++) {
            scanf("%d", &b[i]);
        }
        scanf("%d", &k);
        int index, Min;
        memset(pos, 0, sizeof(pos));
        while (k--) {
            index = -1;
            Min = INT_MAX;
            for (int i = 0; i < p; i++) {
                int x = b[i] - 1;
                int y = pos[b[i] - 1];
                if (y >= (int)a[x].size()) continue;
                if (a[x][y] < Min) {
                    Min = a[x][y];
                    index = i;
                }
            }
            if (index == -1) {
                break;
            }
            pos[b[index] - 1]++;
        }
        cout << Min << "\n";
        
    }
    return 0;
}
------------------------------------------------------------------------------------



#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = (int)1e5 + 10;

struct Node {
    int x, y;
}a[N];

signed main() {
    int n, w;
    scanf("%lld %lld", &n, &w);
    for (int i = 0; i < n; i++) {
        scanf("%lld %lld", &a[i].x, &a[i].y);
    }
    sort(a, a + n, [&](const Node& foo, const Node& bar){return foo.y < bar.y;});
    cout << a[n / 2].y << endl;
    return 0;
}
----------------------------------------------------------------------------------------------------

#include <bits/stdc++.h>
#define int long long
using namespace std;
int w[10010];
signed main()
{
    int tt;
    cin >> tt;
    while (tt--) {
        int n, m;
        int ans = 0;
        scanf("%lld %lld", &n, &m);
        vector<vector<int>> vec(m);
        for (int i = 0; i < n; i++) {
            scanf("%lld", &w[i]);
            vec[w[i] % m].push_back(w[i]);
            ans += w[i];
        }
        for (int i = 0; i < m; i++) {
            sort(vec[i].begin(), vec[i].end(), [&](int x, int y){return x > y;});
        }
        int sum = 0;
        for (int i = 0; i < (int)vec[0].size(); i++) sum += vec[0][i];
        if (m % 2 == 0) {
            if (vec[m / 2].size() % 2 == 0) {
                for (int i = 0; i < vec[m / 2].size(); i++) sum += vec[m / 2][i];
            } else {
                for (int i = 0; i < vec[m / 2].size(); i++) sum += vec[m / 2][i];
                sum -= vec[m / 2].back();
            }
        }
        for (int i = 1; i < (m + 1) / 2; i++) {
            int foo = i;
            int bar = m - i;
            int l = 0, r = 0;
            while (l < (int)vec[foo].size() && r < (int)vec[bar].size()) {
                sum += vec[foo][l];
                sum += vec[bar][r];
                l++;
                r++;
            }
        }
        cout << ans - sum << endl;
    }
    return 0;
}

#笔试题目##腾讯#
全部评论
第一次做笔试,求大佬指点一下,自己测试能过,但是系统测评时一个都过不了是为啥。是算法复杂度过高吗?那也不至于0吧
点赞
送花
回复
分享
发布于 2021-03-21 22:32
第四题能讲解一下吗?奖金总数是6 区间分别是1-2 2-3 3-4 正确答案应该是2吧?但是你的程序应该会返回3 不是吗?
点赞
送花
回复
分享
发布于 2021-03-22 00:21
蔚来
校招火热招聘中
官网直投
请问第一道题是什么思路?
点赞
送花
回复
分享
发布于 2021-03-24 22:31
链表题是只需要写class solution吗?
点赞
送花
回复
分享
发布于 2021-04-01 16:25
楼主做的是技术研发综合吗?题型只有编程题吗
点赞
送花
回复
分享
发布于 2021-04-17 22:00

相关推荐

咋六月了还有面试啊,有兄弟了解这个部门吗一面结束更新更新面完了家人们,纯纯kpi啊,上来就是一道题是打印多个字符串的笛卡尔积,库吃库吃写完了,结果又来一道协程调度的题。做题就做了40分钟,也没开摄像头,也没有反问,也没有八股,最后面试官跑路的时候被我拉住问了一个问题然后不耐烦的回答一句话跑路了。收到二面邀请更新反转了家人们,刚接到邮件,明天二面,这都能二面啊,做完第一个题的时候我以为就结束了。结果面试官说,“再做一个吧”,我到时没绷住就乐了,他还问我笑啥,(我当然是笑kpi太明显啊),结果进二面了还,明天再探吧。二面结束更新刚刚结束面试,新鲜出炉热乎的面经。二面面试官一改一面面试官懒懒洋洋的作风,也开了摄像头,这是本菜鸟经历的最全面的一次面试,有拷打项目、有八股、有场景题、有手撕、有shell编程题(我直接投降)、有智力题面试官水平很高,很发散,问的也很全,就是网络有点卡顿加上面试官说话稍微带点口音,导致有些问题听不清楚。八股的范围基本也就围绕后端老四样,外加项目上的相关知识。我个人感受是大概率寄了,但是面试体验挺好,只不过有些题我直接就投降了,投降的有点多感觉,而且算法也没写到让面试官满意的程度。关于一面的两道手撕第一道可以理解为有多个字符串数组,每个数组里有多个字符串,求笛卡尔积第二道是并发三个协程,有序打印1、2、3三个数字,要求第一个协程打印一百次,第二个两百次,第三个三百次。大概是这个意思。
查看2道真题和解析
点赞 评论 收藏
转发
7 30 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1147688次浏览 17118人参与
# 通信和硬件还有转码的必要吗 #
11097次浏览 101人参与
# OPPO开奖 #
18897次浏览 265人参与
# 和牛牛一起刷题打卡 #
18569次浏览 1621人参与
# 实习与准备秋招该如何平衡 #
202997次浏览 3621人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4797次浏览 30人参与
# 不去互联网可以去金融科技 #
19505次浏览 249人参与
# 通信硬件薪资爆料 #
265473次浏览 2482人参与
# 国企是理工四大天坑的最好选择吗 #
2168次浏览 34人参与
# 互联网公司评价 #
97503次浏览 1277人参与
# 简历无回复,你会继续海投还是优化再投? #
25002次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454483次浏览 5121人参与
# 国企和大厂硬件兄弟怎么选? #
53809次浏览 1010人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14623次浏览 349人参与
# 硬件人的简历怎么写 #
82252次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19363次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
27544次浏览 246人参与
# 学历对求职的影响 #
161078次浏览 1804人参与
# 你收到了团子的OC了吗 #
538240次浏览 6383人参与
# 你已经投递多少份简历了 #
343827次浏览 4960人参与
# 实习生应该准时下班吗 #
96854次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63478次浏览 620人参与
牛客网
牛客企业服务