这次 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;
}
};