Skip to content

Commit 5b62b6b

Browse files
committed
Add problem 1899 - Merge Triplets to Form Target Triplet
1 parent 3a3e745 commit 5b62b6b

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from typing import List
2+
3+
4+
class MergeTripletsToFormTargetTriplet:
5+
@staticmethod
6+
def mergeTriplets(triplets: List[List[int]], target: List[int]) -> bool:
7+
valid_indices = []
8+
for i in range(len(triplets)):
9+
if triplets[i][0] <= target[0] and triplets[i][1] <= target[1] and triplets[i][2] <= target[2]:
10+
valid_indices.append(i)
11+
12+
is_x_present, is_y_present, is_z_present = False, False, False
13+
for index in valid_indices:
14+
if not is_x_present and triplets[index][0] == target[0]:
15+
is_x_present = True
16+
if not is_y_present and triplets[index][1] == target[1]:
17+
is_y_present = True
18+
if not is_z_present and triplets[index][2] == target[2]:
19+
is_z_present = True
20+
21+
return is_x_present and is_y_present and is_z_present
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import unittest
2+
3+
from problems.greedy.merge_triplets_to_form_target_triplet import MergeTripletsToFormTargetTriplet
4+
5+
6+
class TestMergeTripletsToFormTargetTriplet(unittest.TestCase):
7+
8+
def setUp(self):
9+
self.merge_triplets = MergeTripletsToFormTargetTriplet()
10+
11+
def test_merge_triplets_all_present(self):
12+
self.assertTrue(self.merge_triplets.mergeTriplets([[2, 5, 3], [1, 8, 4], [1, 7, 5]], [2, 7, 5]))
13+
14+
def test_merge_triplets_not_all_present(self):
15+
self.assertFalse(self.merge_triplets.mergeTriplets([[2, 3, 4], [1, 2, 3], [1, 2, 3]], [3, 2, 5]))
16+
17+
def test_merge_triplets_single_triplet_match(self):
18+
self.assertTrue(self.merge_triplets.mergeTriplets([[2, 5, 3]], [2, 5, 3]))
19+
20+
def test_merge_triplets_empty_triplets(self):
21+
self.assertFalse(self.merge_triplets.mergeTriplets([], [1, 2, 3]))
22+
23+
def test_merge_triplets_large_values(self):
24+
self.assertTrue(self.merge_triplets.mergeTriplets([[100000, 100000, 100000], [99999, 99999, 99999]],
25+
[100000, 100000, 100000]))
26+
27+
def test_merge_triplets_zero_target(self):
28+
self.assertTrue(self.merge_triplets.mergeTriplets([[0, 0, 0], [1, 1, 1], [0, 1, 0]], [0, 0, 0]))
29+
30+
31+
if __name__ == '__main__':
32+
unittest.main()

0 commit comments

Comments
 (0)