2022.04.24 腾讯后台开发笔试&部分题解


1.竖着输出数字。
2.删除数组中下标非素数的数。
3.最大攻击和防守的差值。
4.循环链表链表序最小。
5.没看



1.竖着输出数字。

直接模拟。

#include <bits/stdc++.h>
using namespace std;


int main() {


    int n;
    cin >> n;
    vector<string>s(n);
    for(int i = 0; i < n; i++) cin >> s[i];
    vector<string>ans;
    for(int i = 0; i < s[0].size(); i++) {
        string t;
        for(int j = 0; j < n; j++) {
            t.push_back(s[j][i]);
        }
        string t2;
        int j = 0;
        while(j < t.size() && t[j] == '0') j++;
        if(j == t.size()) ans.emplace_back("0");
        else {
            t = t.substr(j, t.size() - j + 1);
            ans.emplace_back(t);
        }
    }
    sort(ans.begin(), ans.end(), [&](const string &x, const string &y) {
        if(x.size() == y.size()) return x < y;
        return x.size() < y.size();
    });
    for(int i = 0; i < ans.size(); i++) {
        cout << ans[i];
        if(i == ans.size() - 1) cout << '\n';
        else cout << ' ';
    } 


    return 0;
}



2.删除数组中下标非素数的数。

打表。
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param a int整型vector 
     * @return int整型
     */
    int getNumber(vector<int>& a) {
        int n = a.size();
        if(n <= 3) return a[n - 1];
        if(n == 4) return a[2];
        if(n <= 10) return a[4];
        if(n <= 30) return a[10];
        if(n <= 126) return a[30];
        if(n <= 708) return a[126];
        if(n <= 5380) return a[708];
        if(n <= 52710) return a[5380];
        return a[52710];
    }
};



3.最大攻击和防守的差值。

前后遍历。

#include <bits/stdc++.h>
using namespace std;



int main() {


    int n;
    cin >> n;
    string s;
    cin >> s;
    long long a = 0, b = 0;
    for(int i = 0; i < n; i++) {
        if(s[i] == '1') {
            b += i + 1;
        }
    }
    long long ans = LLONG_MAX;
    for(int i = 0; i < n; i++) {
        ans = min(ans, abs(a - b));
        if(s[i] == '0') {
            a += i + 1;
        } else {
            b -= i + 1;
        }
    }
    ans = min(ans, abs(a - b));
    cout << ans << endl;


    return 0;
}



4.循环链表链表序最小。

模拟。(把一个大于小于号写反了,浪费半小时,最后几分钟发现了,过了90%。。数组越界,没时间改了)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param a ListNode类vector 指向每段碎片的开头
     * @return ListNode类
     */
    ListNode *solve(vector<ListNode *> &a) {
        unordered_map<int, ListNode *>mp;
        unordered_map<int, bool>vis;
        for(int i = 1; i < a.size(); i++) {
            mp[a[i]->val] = a[i];
        }
        vector<ListNode *>v;
        int minIndex = 0;
        ListNode *cur = a[0];
        while(cur) {
            v.push_back(cur);
            if(v[minIndex]->val > v.back()->val) {
                minIndex = v.size() - 1;
            }
            if(mp[cur->val] != nullptr) {
                auto t = mp[cur->val];
                mp[cur->val] = nullptr;
                cur = t;
            }
            vis[cur->val] = true;
            cur = cur->next;
            if(vis[cur->val]) break;
        }
        int nextIndex = minIndex + 1;
        int preIndex = minIndex - 1;
        if(nextIndex == v.size()) nextIndex = 0;
        if(preIndex == -1) preIndex = v.size() - 1;
        int step = 1;
        if(v[preIndex]->val < v[nextIndex]->val) step = -1;
        int curIndex = minIndex;
        int count = v.size() - 1;
        while(count--) {
            int nextIndex = curIndex + step;
            if(nextIndex == v.size()) nextIndex = 0;
            else if(nextIndex == -1) nextIndex = v.size() - 1;
            v[curIndex]->next = v[nextIndex];
            curIndex = nextIndex;
        }
        v[curIndex]->next = nullptr;
        return v[minIndex];
    }
};



5.没看

#腾讯笔试##实习##笔试题目##题解##腾讯#
全部评论
写了两道只有3有40%,凉凉咯
1 回复 分享
发布于 2022-04-24 22:17
这个表是用什么原理打的
点赞 回复 分享
发布于 2022-04-25 09:43
哎,第三题没用long long卡了半天70
点赞 回复 分享
发布于 2022-04-24 22:32

相关推荐

点赞 评论 收藏
分享
2025-11-04 21:22
天津理工大学 Java
Tom哥981:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
2025-12-27 22:36
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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