目錄
T1.5605.檢查兩個字串陣列是否相等
T2.5606.具有給定數值的最小字串
T3.5607.生成平衡陣列的方案數
T4.5608.完成所有任務的最少初始能量
前言:翻了一下前面的博客記錄,上一篇還是10月24號程式員節發的blog,已經快過去一個月了,這一個月過得真快,更新的頻率慢了,其實不少想寫的正在路上,瞄一眼草稿箱:

好幾篇文章盡快打磨一下,爭取早日發出來!
這個月導師給了畢設題目,圖形學方向的,對自己來說又是一個全新的領域,未來的挑戰還是不少啊!這幾個周末要不就是陪女票,要不就是出差,連續缺席了好幾場周賽呀,以后周賽的習慣還是不能丟,再忙也不可能一周連一小時比賽的時間都沒有呀!
其實這場周賽我只參加了前兩題,昨天深夜和女票吵了一架,入睡估計都兩三點了,來實驗室比賽已經快十一點,A了兩題之后,實驗室坐我后面的大佬非要拉我去和他一起聚餐吃飯……后面兩題還是下午來補的,rank啥的已經不重要了,又廢了廢了哎……
總之,菜一點沒關系,心態好就行!繼續加油呀!
T1.5605.檢查兩個字串陣列是否相等
有手就行的題,不說了,,,,

class Solution {
public:
bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
string s1, s2;
for (auto word : word1) {
s1 += word;
}
for (auto word : word2) {
s2 += word;
}
return s1 == s2;
}
};
T2.5606.具有給定數值的最小字串
很明顯的是貪心,貪心法則:字串前面填入盡量多的a,后面填入盡量多的z,最后再將剩下的填充到中間

class Solution {
public:
string getSmallestString(int n, int k) {
// 貪心法則:字串前面填入盡量多的a,后面填入盡量多的z
string a, z;
// 先放a
int num = 0;
while ((n - num - 1) * 26 >= k) {
num++;
k--;
a += 'a';
}
while (k) {
// 再放末尾z
if (k >= 26) {
z += 'z';
k -= 26;
} else { // 最后放中間剩下的字符
z = char('a' + k - 1) + z;
break;
}
}
return a + z;
}
};
T3.5607.生成平衡陣列的方案數
前綴和模擬一遍,特別注意每次洗掉對應的元素之后,下標會改變,具體看代碼

class Solution {
public:
int waysToMakeFair(vector<int>& nums) {
// 前綴和暴力模擬
int ans = 0;
int odd[nums.size() + 1];
int even[nums.size() + 1];
odd[0] = even[0] = 0;
for (int i = 1; i <= nums.size(); i++) {
odd[i] = odd[i - 1] + ((i - 1) % 2 != 0 ? nums[i - 1] : 0);
even[i] = even[i - 1] + ((i - 1) % 2 == 0 ? nums[i - 1] : 0);
}
for (int i = 1; i <= nums.size(); i++)
ans += ((odd[i - 1] + (even[nums.size()] - even[i])) == (even[i - 1] + (odd[nums.size()] - odd[i])));
return ans;
}
};
T4.5608.完成所有任務的最少初始能量
按照慣例溜號,這次還是被動溜號,上一個大佬的代碼,供參考:https://leetcode-cn.com/problems/minimum-initial-energy-to-finish-tasks/solution/wan-cheng-suo-you-ren-wu-de-zui-shao-chu-shi-neng-/

class Solution {
public:
int minimumEffort(vector<vector<int>>& tasks) {
sort(tasks.begin(), tasks.end(), [](const auto& u, const auto& v) {
return u[0] - u[1] < v[0] - v[1];
});
int p = 0;
int suma = 0;
for (const auto& task: tasks) {
p = max(p, suma + task[1]);
suma += task[0];
}
return p;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226961.html
標籤:其他
