题意理解
给定一个二维数组,n*2,每行有前后两个元素,问,对于每行,如果存在一行,前后两个元素都比它大,那么就算一个,统计总个数。
问题分析
用到排序
用到要给推理:就是按照第一个元素从大到小排序,当第一个元素相同,按照第二个元素从小到大排序,这样当第二个元素比最大的第二个元素小,说明前面出现了要求的元素,算一,反之,更新最大的第二个元素为当前第二个元素。
其他
链接
class Solution {
public:
int numberOfWeakCharacters(vector<vector<int>>& properties) {
sort(properties.begin(), properties.end(), [](auto & a, auto & b) {
if (a[0] == b[0]) {
return a[1] < b[1];
}
else {
return a[0] > b[0];
}
});
int res = 0;
int defense = INT_MIN;
for (auto a : properties) {
//cout << a[0] << '\t' << a[1] << endl;
if (a[1] < defense) {
//cout << '1' << endl;
res++;
//defense = a[1];
}
else {
defense = a[1];
}
}
return res;
}
};