1. 题目
2. 思路
(1) 快速排序
- 先按照攻击力降序排序,再按照防御力升序排序,遍历数组,维护全局最高的防御力,若出现防御力低于最高防御力的,则其必定是弱角色。
- 因为其攻击力均小于前面的角色,而其防御力又小于前面的某一个角色,因此,相对于前面的某一个角色来说,其是弱角色。
3. 代码
import java.util.Arrays;
import java.util.Comparator;
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int numberOfWeakCharacters(int[][] properties) {
Arrays.sort(properties, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0];
}
});
int res = 0;
int max = Integer.MIN_VALUE;
for (int[] property : properties) {
if (property[1] < max) {
res++;
} else if (property[1] > max) {
max = property[1];
}
}
return res;
}
}