Leetcode 198场题解 + 视频讲解

这次 Leetcode 排名还不错,侥幸进入到了简历内推名次中,但是我知道我当前的能力根本
不行,但增加了我的信心。
在这里插入图片描述
视频讲解:

Leetcode 198场题解

参考代码:(仅供参考)

换酒问题:

class Solution {
public:
    int numWaterBottles(int n, int k) {
     int ans=0;
     while(n-k>=0)
     {
         ans+=k;
         n-=k;
         n++;
     }
     ans+=n;
     return ans;
    }
};

子树中标签相同的点:

class Solution {
struct node
{
    int v,nex;
}edge[200005];
int dp[100005][30];
int head[100005],cnt;
void add(int u,int v)
{
    edge[cnt].v=v,edge[cnt].nex=head[u];
    head[u]=cnt++;
}
void dfs(int u,int fa)
{
    for(int i=head[u];~i;i=edge[i].nex)
    {
        int v=edge[i].v;
        if(v!=fa)
        {
            dfs(v,u);
            for(int i='a';i<='z';i++)
              dp[u][i-96]+=dp[v][i-96];
        }
    }
}
public:
    vector<int> countSubTrees(int n, vector<vector<int>>& edges, string labels) {
          memset(head,-1,sizeof head);
          for(int i=0;i<n;i++)
            dp[i][labels[i]-96]=1;
          int m=edges.size();
          for(int i=0;i<m;i++)
          {
              add(edges[i][0],edges[i][1]);
              add(edges[i][1],edges[i][0]);
          }
          dfs(0,-1);
          vector<int>vec;
          for(int i=0;i<n;i++)
            vec.push_back(dp[i][labels[i]-96]);
          return vec;
          
    }
};

最多的不重复的子字符串:
(还不会)略…

找到最接近目标值的函数值:

class Solution {
int fun(int l,int r,vector<int>& arr)
{
    int ans=arr[l];
    for(int i=l+1;i<=r;i++)
    {
        ans&=arr[i];
    }
    return ans;
}
public:
    int closestToTarget(vector<int>& arr, int target) {
     int ans=999999999;
     for(int i=0;i<arr.size();i++)
     {
         ans=min(ans,abs(arr[i]-target));
     }
     int k=1000;
     while(k--)
     {
         int l=rand()%arr.size(),r=rand()%arr.size();
         ans=min(ans,abs(fun(l,r,arr)-target));
     }
    return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/yangzijiangac/article/details/107445650