我的第八次LeetCode周赛
心情
题目在此
又麻了😭
第一题(统计特殊四元组)
题意简单:直接四重循环暴力
一种优化:求前三个数组的和,判断第四个数字是否存在。
另一种优化:求前两个数组的和与后两个数的差,判断是否存在匹配情况
class Solution {
public:
int countQuadruplets(vector<int>& nums) {
int n = nums.size();
int res = 0;
for (int i = 0; i < n; i ++)
for (int j = i + 1; j < n; j ++)
for (int k = j + 1; k < n; k ++)
for (int z = k + 1; z < n; z ++)
if (nums[i] + nums[j] + nums[k] == nums[z])res ++;
return res;
}
};
第二题(访问完所有房间的第一天)
我觉得挺恶心的
解法:从大到小排攻击,从小到大排防御(反过来也行 )
已知攻击已经是从大到小了,设一个max表示最当前最大防御。遍历数组,遇到小的防御就把答案加 1,因为攻击排过序一定比前面的小,所以攻击更小了那就符合条件了。遇到更大的就更新max。
感觉有点像贪心
class Solution {
public:
int numberOfWeakCharacters(vector<vector<int>>& p) {
sort(p.begin(),p.end(),[](vector<int> &a,vector<int> &b){
if (a[0] == b[0])return a[1] < b[1];
return a[0] > b[0];
});
int n = p.size();
int res = 0;
int ma = 0;
for (int i = 0; i < n; i ++){
if (p[i][1] < ma) res ++;
else ma = p[i][1];
}
return res;
}
};
第三题(访问完所有房间的第一天)
待 续 待续 待续
第四题(数组的最大公因数排序)
下 次 一 定 😭 下次一定😭 下次一定😭