leetcode184 周赛 全解题报告(手速场)

这场比赛基本上没什么难度,几个水题,最难得的题基本上就是一个入门dp

A

暴力匹配字符串,一共四层循环暴力跑

class Solution {
public:
    vector stringMatching(vector& words) {
        string matchingString;
        string patternString;
        vector stringMatching;
        for(int i=0 ;i

B

对于每次查询暴力更新

class Solution 
{
public:
    vector processQueries(vector& queries, int m) 
    {
        vector ans;
        int array[1005];
        for(int i=1;i<=m ;i++)
        {
            array[i]=i-1;
        }
        for(int i =0 ;i< queries.size() ;i++)  //1000*1000
        {
            int pos = array[queries[i]];
            ans.push_back(pos);
            array[queries[i]] = 0;
            for(int j = 1 ; j<=m ;j++)
            {
                if(queries[i] == j) continue;
                if(array[j]

C

应该string函数中有replace,但是忘记了,反正自己写一个也不麻烦

class Solution 
{
public:
    int StringCopy(int begin,int end,const string& s1 , string &s2)
    {
        s2="";
        if(end>=s1.size()) return 0;
        for(int i=begin ; i<=end ; i++) s2 += s1[i];
        return 1;
    }
    string entityParser(string text) 
    {
        string ans;
        for( int i =0 ; i';
                else if(StringCopy(i+1,i+3,text,temp)==1&&temp=="lt;")i+=3,ans+='<';
                else ans+='&';
            }
            else 
            {
                ans+=text[i];
            }
        }
        return ans;
    }
};

D

难度是hard 但是基本上是一个入门dp,由于我好就没写了,一开始没看出来

对于每一行实际上有两种状态一个是aba ,abc

手写很容易就推出了状态转移方程

class Solution {
public:
    int numOfWays(int n) {
        const long long mod=1000000007;
        long long dp[5005][2];
        dp[1][0]=6;//aba
        dp[1][1]=6;//abc
        for(int i=2;i<=n;i++)
        {
            dp[i][1]=(dp[i-1][0]*2+dp[i-1][1]*3)%mod;
            dp[i][0]=(dp[i-1][0]*2+dp[i-1][1]*2)%mod;
        }
        return (dp[n][1]+dp[n][0])%mod;
    }
};

 

你可能感兴趣的:(力扣)