记录第一次参加力扣的周赛:(虽然只写出了两题)
本文章代码以c++为例!
第一题:7004. 判别首字母缩略词
代码:
class Solution {
public:
bool isAcronym(vector<string>& words, string s) {
int wordIndex = 0; // 用于跟踪 words 数组的索引
int sIndex = 0; // 用于跟踪字符串 s 的索引
while (wordIndex < words.size() && sIndex < s.size()) {
if (words[wordIndex][0] == s[sIndex]) {
++wordIndex; // 移动到下一个单词
++sIndex; // 移动到字符串 s 的下一个字符
} else {
++sIndex; // 如果字符不匹配,只在字符串 s 中移动
}
}
// 如果所有单词都已覆盖,并且字符串 s 的所有字符都被处理,则是一个首字母缩略词
return wordIndex == words.size() && sIndex == s.size();
}
};
第二题:6450. k-avoiding 数组的最小总和
代码:
class Solution {
public:
int minimumSum(int n, int k) {
std::vector<int> kAvoidingArray(n);
// 初始化 k-avoiding 数组为前 n 个正整数
for (int i = 0; i < n; i++) {
kAvoidingArray[i] = i + 1;
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (k == kAvoidingArray[i] + kAvoidingArray[j]) {
if(j<n-1&&kAvoidingArray[j+1]!=kAvoidingArray[j]+1){
kAvoidingArray[j]=kAvoidingArray[j]+1;i=0;j=i+1;
}else{
for (int t = j; t < n; t++)
kAvoidingArray[t] = kAvoidingArray[t] + 1;
i=0;j=i+1;
}
}
}
}
// 计算数组总和
int sum = accumulate(kAvoidingArray.begin(), kAvoidingArray.end(), 0);
return sum;
}
};