8.13 贝壳买房笔试投票+全A代码




A  找准一轮花费2*n-2就可以
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @param m long长整型 
     * @return long长整型vector
     */
    long sum[1005];
    vector<long> FarmerNN(int n, long long m) {
        // write code here
        long every = 2*n-2;
        long t = m/every;
        int re = m%every;
        for(int i=2;i<n;i++)
            sum[i] = 2*t;
        sum[1] = t;
        sum[n] = t;
        int flag = 0;
        int now = 1;
        while(re>0){
            sum[now]++;
            re--;
            if(flag == 0)
            {
                now++;
                if(now == n)
                    flag = 1;
            }
            else
                now--;
        }
        vector<long>ans;
        for(int i=1;i<=n;i++)
            ans.push_back(sum[i]);
        return ans;
    }
};

B 最简单的题,不多解释
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param k int整型 
     * @return string字符串
     */
    int alive[26];
    string NS_String(string s, int k) {
        // write code here
        int len = s.length();
        for(int i=0;i<len;i++)
            alive[s[i]-'a'] = 1;
        for(int i=1;i<=k;i++){
            for(int j=0;j<26;j++)
            {
                if(alive[j] == 1){
                    alive[j] = 0;
                    break;
                }
            }
        }
        string ans = "";
        for(int i=0;i<len;i++){
            if(alive[s[i]-'a'] == 1)
                ans.push_back(s[i]);
        }
        return ans;
    }
};

C 先找非奇异区间,再用总区间减去非奇异区间,dp[i]代表以第i位结尾的非奇异区间的个数
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param a int整型vector 
     * @param t int整型 
     * @return long长整型
     */
    long long dp[100005];
    int dir[1000005];
    long long section(vector<int>& a, int t) {
        // write code here
        memset(dir,-1,sizeof(dir));
        long long big = -1;
        int size = a.size();
        for(int i=0;i<size;i++){
            int another = t^a[i];
            dp[i] = max(big,(long long)dir[another]);
            dir[a[i]] = i;
            big = max(big,dp[i]); 
        }
        long long cnt = 0;
        for(int i=0;i<size;i++)
            cnt = cnt + (dp[i] + 1);
        long s = size;
        s = s*(s-1)/2;
        return s - cnt;
    }
};

D 我不会,暴力能过,数据水了
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    vector<TreeNode*>vec;
    unordered_map<TreeNode*,int>sum;
    int c[100005];
    bool seven;
    void add(TreeNode* root){
        if(root == nullptr)
            return;
        vec.push_back(root);
        add(root->left);
        add(root->right);
        int cnt = 1;
        if(root->left != nullptr)
            cnt += sum[root->left];
        if(root->right != nullptr)
            cnt += sum[root->right];
        sum[root] = cnt;
    }
    void dfs(TreeNode* x,TreeNode* y){
        if(seven == false)
            return;
        if(x == nullptr && y == nullptr)
            return;
        if(x == nullptr || y == nullptr){
            seven = false;
            return;
        }
        dfs(x->left,y->left);
        dfs(x->right,y->right);
    }
    int maxSubTree(TreeNode* root) {
        // write code here
        add(root);
        int size = vec.size();
        for(int i=0;i<size;i++){
            c[i] = sum[vec[i]];
        }
        int ans = 0;
        for(int i=0;i<size;i++){
            int p = c[i];
            if(p < ans)
                continue;
            for(int j=i+1;j<size;j++){
                int q = c[j];
                if(p != q)
                    continue;
                seven = true;
                dfs(vec[i],vec[j]);
                if(seven)
                    ans = max(ans,p);
            }
        }
        
        return ans;
    }
};




#贝壳笔试##笔经##贝壳找房#
全部评论
tql,膜拜大佬😂
1 回复 分享
发布于 2021-08-13 22:06
tql
点赞 回复 分享
发布于 2021-08-13 22:14
大佬tql,我昨日的时候观点太错误了,我觉得,比如第二题,你写的那种解法想得出来,但是心里总是想要想一种一次遍历的方法😔,走入死胡同
点赞 回复 分享
发布于 2021-08-13 22:20
我想知道刷多少题才能像大佬一样优秀
点赞 回复 分享
发布于 2021-08-13 22:24
我第四题爆栈了,90%,好气
点赞 回复 分享
发布于 2021-08-13 22:32
请问第三题有哪里的题源吗?
点赞 回复 分享
发布于 2021-08-14 14:59
dp[i] = max(big,(long long)dir[another]); 大佬,请问这个状态转移是怎么推出来的呢,TQL
点赞 回复 分享
发布于 2021-08-14 17:19

相关推荐

10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
8 23 评论
分享
牛客网
牛客企业服务