我是靠谱客的博主 凶狠大门,最近开发中收集的这篇文章主要介绍Leetcode 第一周周赛总结(第 234 场周赛)排名及做题情况闲聊第一题 字符串中不同整数的数目 Easy第二题 还原排列的最少操作步数 Med第三题 替换字符串中的括号内容 Med第四题 好因子的最大数目 Hard,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 排名及做题情况
  • 闲聊
  • 第一题 字符串中不同整数的数目 Easy
    • 题目截图
    • 第一题 比赛未AC代码(卡了两个用例)
    • 第一题 赛后更正AC代码
  • 第二题 还原排列的最少操作步数 Med
    • 题目截图
    • 第二题 比赛AC代码
  • 第三题 替换字符串中的括号内容 Med
    • 题目截图
    • 第三题 比赛AC代码
  • 第四题 好因子的最大数目 Hard
    • 题目截图
    • 相关题目 343. 整数拆分
    • 赛后cv他人优秀代码


排名及做题情况

国内2147名 全球5219名
做对了 两道Mid 一道Ez没有AC 卡了两个用例 Hard还没有时间看

在这里插入图片描述
在这里插入图片描述



闲聊

尽管说是第一场周赛 第一次参加这样的线上做题比赛哈哈哈哈
但是我起床都起晚了15分钟 本来10:30开赛的
我想着8点的闹钟 我关掉了还会响起来的
结果就再也没响了 好家伙 一起床10:40了

图书馆也没去成 干脆就不去了 再去的话 11:20了
直接下床拿电脑 然后回床上 开始做题
发现还没有报名 捏马

做题的时候人才刚刚起床 第一道Ez题目做了50分钟
捏马 就是AC不过 算了算了

第二题第三题 其实一点都不难
最后Hard都没有时间看了
做题期间还去刷了个牙 喝了口水

反正以后打周赛的时候 要起早点了 不能再这么晚起床了



第一题 字符串中不同整数的数目 Easy

题目截图

在这里插入图片描述


第一题 比赛未AC代码(卡了两个用例)

class Solution {
public:
    int numDifferentIntegers(string word) {
        auto a = unordered_set<long>();
        int strl = word.size();
        string temp = "";
        for(int i=0;i<strl;i++)
        {
            if(isdigit(word[i]))
                temp+=word[i];
            else if(temp.size())
            {
                long ret = atoi(temp.c_str());
                a.insert(ret);
                temp = "";
            }  
        }
        if(temp.size())
        {
            int ret = atoi(temp.c_str());
            a.insert(ret);
        }
        return a.size();
    }
};

第一题 赛后更正AC代码

class Solution {
public:
    int numDifferentIntegers(string word) {
        auto a = unordered_set<string>();
        int strl = word.size();
        string temp = "";
        for(int i=0;i<strl;i++)
        {
            if(isdigit(word[i]))
            {    
                temp+=word[i];
                if(temp.size() == 2 && temp[0] =='0')
                    temp = temp[1];
            }
            else if(temp.size())
            {
                a.insert(temp);
                temp = "";
            }  
        }
        if(temp.size())
            a.insert(temp);
        return a.size();
    }
};


第二题 还原排列的最少操作步数 Med

题目截图

在这里插入图片描述


第二题 比赛AC代码

class Solution {
public:
    int reinitializePermutation(int n) {
        vector<int> dp1(n);
        vector<int> dp2(n);
        vector<int> pre(n);
        int temp = n/2;
        int count;
        for(int i=0;i<n;i++)
        {
            dp1[i] = i;
            dp2[i] = i;
            pre[i] = i;
        }
        
        for(count=1;;count++)
        {
            dp2 = dp1;
            for(int i=0;i<n;i++)
            {
                if(!(i%2))  dp1[i] = dp2[i/2];
                else dp1[i] = dp2[(i-1)/2 + temp];
            }
            if(pre==dp1) break;
        }
        return count;
    }
};


第三题 替换字符串中的括号内容 Med

题目截图

在这里插入图片描述


第三题 比赛AC代码

class Solution {
public:
    string evaluate(string s, vector<vector<string>>& knowledge) {
        int flag = 0,size = knowledge.size();
        string temp,ret;
        map<string,string> go;
        for(int i=0;i<size;i++)
            go.insert(make_pair(knowledge[i][0],knowledge[i][1]));
            
        for(char ch:s)
        {
            if(flag)
            {
                if(isalpha(ch))
                    temp+=ch;
                else
                {
                    flag = 0;
                    auto tempret = go.find(temp);
                    if(tempret == go.end())
                        ret += '?';
                    else    ret += tempret->second;
                    temp = "";
                }
            }
            else
            {
                if(ch == '(')
                    flag = 1;
                else ret+=ch;
            }
        }
        return ret;
    }
};

第四题 好因子的最大数目 Hard

题目截图

在这里插入图片描述

相关题目 343. 整数拆分

刚刚看了看人家的思路 说这道题是快速幂和整数拆分的合集
所以现在再去二刷这两道题了
下面放出来解答博客链接

Leetcode 343.整数拆分

确实脑力不够 什么剪绳子 什么快速幂 感觉还是之后
真的又做到了再解吧 下面放出来人家的题解


赛后cv他人优秀代码

const int modN = 1e9 + 7;
class Solution {
public:
    int maxNiceDivisors(int primeFactors) {
        int n = primeFactors;
        if (n <= 3) {
            return n;
        }
        long long ans = 0;
        int quotient = n / 3;
        int remainder = n % 3;
        if (remainder == 0) {
            ans = myPow(3, quotient);
        } else if (remainder == 1) {
            ans = myPow(3, quotient - 1) * 4;
        } else {
            ans = myPow(3, quotient) * 2;
        }
        return ans % modN;
    }
    long long myPow(long long x, int n) {
        long long ans = 1;
        n = abs(n);
        while(n){
            if(n % 2 != 0){
                ans *= x;
                ans %= modN;
            }
            x *= x;
            x %= modN;
            n /= 2;
        }
        return ans;
    }
};

最后

以上就是凶狠大门为你收集整理的Leetcode 第一周周赛总结(第 234 场周赛)排名及做题情况闲聊第一题 字符串中不同整数的数目 Easy第二题 还原排列的最少操作步数 Med第三题 替换字符串中的括号内容 Med第四题 好因子的最大数目 Hard的全部内容,希望文章能够帮你解决Leetcode 第一周周赛总结(第 234 场周赛)排名及做题情况闲聊第一题 字符串中不同整数的数目 Easy第二题 还原排列的最少操作步数 Med第三题 替换字符串中的括号内容 Med第四题 好因子的最大数目 Hard所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部