You are given a 2D integer array threats, where each threats[i] = [IDi, sevi, expi]
IDi: Unique identifier of the threat.sevi: Indicates the severity of the threat.expi: Indicates the exploitability of the threat.The score of a threat i is defined as: score = 2 × sevi + expi
Your task is to return threats sorted in descending order of score.
If multiple threats have the same score, sort them by ascending ID.
Example 1:
Input: threats = [[101,2,3],[102,3,2],[103,3,3]]
Output: [[103,3,3],[102,3,2],[101,2,3]]
Explanation:
| Threat | ID | sev | exp | Score = 2 × sev + exp |
|---|---|---|---|---|
threats[0] |
101 | 2 | 3 | 2 × 2 + 3 = 7 |
threats[1] |
102 | 3 | 2 | 2 × 3 + 2 = 8 |
threats[2] |
103 | 3 | 3 | 2 × 3 + 3 = 9 |
Sorted Order: [[103, 3, 3], [102, 3, 2], [101, 2, 3]]
Example 2:
Input: threats = [[101,4,1],[103,1,5],[102,1,5]]
Output: [[101,4,1],[102,1,5],[103,1,5]]
Explanation:
| Threat | ID | sev | exp | Score = 2 × sev + exp |
|---|---|---|---|---|
threats[0] |
101 | 4 | 1 | 2 × 4 + 1 = 9 |
threats[1] |
103 | 1 | 5 | 2 × 1 + 5 = 7 |
threats[2] |
102 | 1 | 5 | 2 × 1 + 5 = 7 |
threats[1] and threats[2] have same score, thus sort them by ascending ID.
Sorted Order: [[101, 4, 1], [102, 1, 5], [103, 1, 5]]
Constraints:
1 <= threats.length <= 105threats[i] == [IDi, sevi, expi]1 <= IDi <= 1061 <= sevi <= 1091 <= expi <= 109IDi are uniqueWe can directly sort the array according to the requirements of the problem. Note that the score is a long integer, so we need to use long integers when comparing to avoid overflow.
The time complexity is O(n times log n), and the space complexity is O(log n), where n is the length of the array threats.
Java
C++
Go
TypeScript
Rust
Practice Sort Threats by Severity and Exploitability with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor