本文共 1747 字,大约阅读时间需要 5 分钟。
目录
前言
T1.5605. 检查两个字符串数组是否相等
T2.5606. 具有给定数值的最小字符串
T3.5607. 生成平衡数组的方案数
T4.5608. 完成所有任务的最少初始能量
前言
翻了一下前面的博客记录,上一篇还是10月24号程序员节发的blog,已经快过去一个月了。这一个月过得真是飞快,更新的频率慢了。
这个月导师给了毕设题目,图形学方向的,对自己来说又是一个全新的领域,未来的挑战还是不少啊!
这几个周末要不就是陪女友,要不就是出差,连续缺席了好几场周赛,后面连续缺席的风 حال也绝对是不行的,再忙也不可能连续一周连一小时比赛的时间都没有呀!
其实这场周赛我只参加了前两题,昨天深夜和女友吵了一架,入睡估计都两三点了,来实验室比赛已经快十一点了。
总之,没什么可以说抱怨的,心态好就行!继续加油呀!
T1.5605. 检查两个字符串数组是否相等
有手就行的题,不说了。
T2.5606. 具有给定数值的最小字符串
贪心法则:字符串前面填入尽量多的a,后面填入尽量多的z,最后再将剩下的填充到中间
T3.5607. 生成平衡数组的方案数
前缀和模拟一遍,特别注意每次删除对应的元素之后,下标会改变,具体看代码
T4.5608. 完成所有任务的最少初始能量
按照惯例溜号,这次还是被动溜号,上一个大佬的代码,供参考:...
参考代码如下:
class Solution {public:bool arrayStringsAreEqual(vector
class Solution {public:string getSmallestString(int n, int k) {string a, z;int num = 0;while ((n - num - 1) * 26 >= k) {num++;k--;a += 'a';}while (k > 0) {if (k >= 26) {z += 'z';k -= 26;} else {z = char('a' + k - 1) + z;break;}}return a + z;}}
class Solution {public:int waysToMakeFair(vector
& 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;}}class Solution {public:int minimumEffort(vector<vector
>& 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;}}转载地址:http://sqgyk.baihongyu.com/