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

相关推荐

xdm&nbsp;早上喝奶茶差点喷出来。事情是这样的,我们班有个哥们儿,简称&nbsp;L,去年秋招拿了字节sp,专业方向是后端。我们当时都震惊:这哥们儿平时课上从来不发言,期末小组作业基本是划水的那种,刷题平台&nbsp;commit记录我点进去看过,绿格子稀稀拉拉。但他面试一路绿灯。一面二面三面&nbsp;hr&nbsp;面,全过,给的还是sp。当时班级群里恭喜他的、问他经验的、约饭的,热闹了一周。他说自己"运气好,准备充分"。我们都信了,直到三月初他入职。入职第二周开始,班里另一个进字节的同学W(在隔壁组的)开始跟我他的不对劲。一开始是写代码慢,后来写不出来,再后来是组里&nbsp;mentor&nbsp;让他fix&nbsp;一个简单&nbsp;bug&nbsp;都搞了一下午没动静。最离谱的是上周。W&nbsp;说他们大部门搞了个新人分享会,让新人讲一下自己负责模块的设计思路。L&nbsp;上去讲了&nbsp;20分钟,全程念稿子,问答环节别人随便问一个"那你这里为什么用&nbsp;Redis&nbsp;不用&nbsp;Memcached",他直接卡&nbsp;30秒说"这个我回去再确认一下"。会后他&nbsp;mentor&nbsp;直接找&nbsp;leader&nbsp;谈,leader&nbsp;找&nbsp;hr&nbsp;谈,hr调出了他面试录像,全程对比口型和回答节奏,发现他二三面有大量时长在偷偷看屏幕外(推测开了双机位&nbsp;AI&nbsp;答题)。(这段是&nbsp;W后来转述给我的,他自己也是听他组里同事八卦来的)昨天下班前,W&nbsp;告诉我L&nbsp;被辞退了,让他自己走,不走就走仲裁但会发函到学校。L&nbsp;现在已经回学校了,朋友圈仅三天可见。我说真的,我不是个心眼小的人,但是我看到这个消息的时候真的有种"嗯,挺好"的感觉。去年秋招我投字节后端,简历挂。我准备了八个月,背&nbsp;八股&nbsp;+&nbsp;刷&nbsp;500&nbsp;题&nbsp;+项目改了三版,连面试机会都没拿到。班里这哥们儿凭着一个外挂上岸,最后还是被甩出来了。不是说作弊就一定会被发现,但是当面试拿到的&nbsp;offer远远超出真实能力的时候,迟早会有这一天。试用期三个月不是给你过家家的,是真的要写代码、要在会议上回答问题、要扛需求的。我现在反而有点同情他。同情他相信"上岸就是终点"。发出来不是为了嘲笑谁,就是想说给那些正在被身边作弊上岸的同学搞得很&nbsp;emo&nbsp;的&nbsp;uu&nbsp;们听——别急,回旋镖很长,但它一定会回来。你继续刷你的题,写你的项目,背你的八股。该是你的迟早是你的,不是你的早晚还得还回去。xdm&nbsp;共勉。
牛客12588360...:我不想评论面试方式,作弊是绝对不对的,但是你八股加刷题也不过是个做题小子,他穿帮纯粹是他菜,你也没有高明到哪里去
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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