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
dp[i] = max(big,(long long)dir[another]); 大佬,请问这个状态转移是怎么推出来的呢,TQL
点赞 回复 分享
发布于 2021-08-14 17:19
我第四题爆栈了,90%,好气
点赞 回复 分享
发布于 2021-08-13 22:32
我想知道刷多少题才能像大佬一样优秀
点赞 回复 分享
发布于 2021-08-13 22:24
大佬tql,我昨日的时候观点太错误了,我觉得,比如第二题,你写的那种解法想得出来,但是心里总是想要想一种一次遍历的方法😔,走入死胡同
点赞 回复 分享
发布于 2021-08-13 22:20
tql
点赞 回复 分享
发布于 2021-08-13 22:14

相关推荐

11-06 12:53
吉林大学 Java
如题,ip属地末九,计算机科班大三本科生。想找一段寒假实习,也是第一次找实习。&nbsp;从大二暑假7月开始准备Java后端,前期有点磨叽,导致现在手忙脚乱。目前第二个项目黑马点评快写完了,第一个项目是苍穹外卖(两个项目都是烂大街的,这就很头大)。算法题在lc上从大二至今陆续刷了将近六百题,hot100已过一遍,面试150目前刷了一半。八股刚看了不到一周,想请教一下各位牛友,这一版简历哪些地方需要继续改进,接着优化?&nbsp;同时,是现在立即开始投递,边投边背八股,完善项目。还是说八股再背个小半个月再开始投递比较好一点,我现在担心的是到了这个月下旬或者12月再开始投递简历面试会有点晚,听同学说到年底hc数量会大...
mikeu04:简历顶部留名字即可,你写“后端开发实习生-Java”就是把自己的方向限制死了。我建议把这揉在个人简介里,说你对后端开发充满热情就行。性别出生年份以及微信号不是必须的。 把个人简介从教育背景里拿出来,第一个写。你的个人简介有点太泛了。把“爱好中长跑”去了,加点数字(“拥有xxx年的xxx经历”),加点你最熟的几个语言或技术栈。和别人的简介区分开来。 专业技能放项目经历前面。面试官一般会优先看这个再往下看你做了什么项目来考察你是否具备这些技能。实习我不是很清楚,但像Redis, JVM, 消息模型,计算机网络这些属于基本知识。你如果了解GCP, AWS, Docker 这些实际生产工具就可以把八股知识换掉。 项目简介可以和工作内容揉在一起。项目简介还是太长了,就一句话,“开发了一个基于【1,2个主要框架】为【目标客户群体】的【产品类型】, 实现了【产品价值】”。产品价值不是功能。比如一个在线计算器,它的功能是算数,但它的价值可以是让人在没带计算器的情况下算数(可访问性)或比手算效率提升了80%。工作内容多加点数字,你这个产品有多少人用了?浏览量是多少?技术上xxx性能提升了多少%?(实在想不出来就丢给deepseek :) 11 月理论上秋招已经结束了。八股是背不完的。无脑投,刷笔试,中了面试邀请就突击面经八股,没问题的。
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
评论
8
23
分享

创作者周榜

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