3631. Sort Threats by Severity and Exploitability π
Description
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 <= 105
threats[i] == [IDi, sevi, expi]
1 <= IDi <= 106
1 <= sevi <= 109
1 <= expi <= 109
- All
IDi
are unique
Solutions
Solution 1: Sorting
We 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 \(\text{threats}\).
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|