1899. Merge Triplets to Form Target Triplet LeetCode Solution

In this guide, you will get 1899. Merge Triplets to Form Target Triplet LeetCode Solution with the best time and space complexity. The solution to Merge Triplets to Form Target Triplet problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.

Table of Contents

  1. Problem Statement
  2. Complexity Analysis
  3. Merge Triplets to Form Target Triplet solution in C++
  4. Merge Triplets to Form Target Triplet solution in Java
  5. Merge Triplets to Form Target Triplet solution in Python
  6. Additional Resources
1899. Merge Triplets to Form Target Triplet LeetCode Solution image

Problem Statement of Merge Triplets to Form Target Triplet

A triplet is an array of three integers. You are given a 2D integer array triplets, where triplets[i] = [ai, bi, ci] describes the ith triplet. You are also given an integer array target = [x, y, z] that describes the triplet you want to obtain.
To obtain target, you may apply the following operation on triplets any number of times (possibly zero):

Choose two indices (0-indexed) i and j (i != j) and update triplets[j] to become [max(ai, aj), max(bi, bj), max(ci, cj)].

For example, if triplets[i] = [2, 5, 3] and triplets[j] = [1, 7, 5], triplets[j] will be updated to [max(2, 1), max(5, 7), max(3, 5)] = [2, 7, 5].

Return true if it is possible to obtain the target triplet [x, y, z] as an element of triplets, or false otherwise.

Example 1:

Input: triplets = [[2,5,3],[1,8,4],[1,7,5]], target = [2,7,5]
Output: true
Explanation: Perform the following operations:
– Choose the first and last triplets [[2,5,3],[1,8,4],[1,7,5]]. Update the last triplet to be [max(2,1), max(5,7), max(3,5)] = [2,7,5]. triplets = [[2,5,3],[1,8,4],[2,7,5]]
The target triplet [2,7,5] is now an element of triplets.

Example 2:

Input: triplets = [[3,4,5],[4,5,6]], target = [3,2,5]
Output: false
Explanation: It is impossible to have [3,2,5] as an element because there is no 2 in any of the triplets.

Example 3:

Input: triplets = [[2,5,3],[2,3,4],[1,2,5],[5,2,3]], target = [5,5,5]
Output: true
Explanation: Perform the following operations:
– Choose the first and third triplets [[2,5,3],[2,3,4],[1,2,5],[5,2,3]]. Update the third triplet to be [max(2,1), max(5,2), max(3,5)] = [2,5,5]. triplets = [[2,5,3],[2,3,4],[2,5,5],[5,2,3]].
– Choose the third and fourth triplets [[2,5,3],[2,3,4],[2,5,5],[5,2,3]]. Update the fourth triplet to be [max(2,5), max(5,2), max(5,3)] = [5,5,5]. triplets = [[2,5,3],[2,3,4],[2,5,5],[5,5,5]].
The target triplet [5,5,5] is now an element of triplets.

Constraints:

1 <= triplets.length <= 105
triplets[i].length == target.length == 3
1 <= ai, bi, ci, x, y, z <= 1000

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(1)

1899. Merge Triplets to Form Target Triplet LeetCode Solution in C++

class Solution {
 public:
  bool mergeTriplets(vector<vector<int>>& triplets, vector<int>& target) {
    vector<int> merged(target.size());

    for (const vector<int>& triplet : triplets)
      if (equal(triplet.begin(), triplet.end(), target.begin(),
                [](int a, int b) { return a <= b; }))
        transform(triplet.begin(), triplet.end(), merged.begin(),
                  merged.begin(), [](int a, int b) { return max(a, b); });

    return merged == target;
  }
};
/* code provided by PROGIEZ */

1899. Merge Triplets to Form Target Triplet LeetCode Solution in Java

class Solution {
  public boolean mergeTriplets(int[][] triplets, int[] target) {
    int[] merged = new int[target.length];

    for (int[] triplet : triplets)
      if (triplet[0] <= target[0] && triplet[1] <= target[1] && triplet[2] <= target[2])
        for (int i = 0; i < target.length; ++i)
          merged[i] = Math.max(merged[i], triplet[i]);

    return Arrays.equals(merged, target);
  }
}
// code provided by PROGIEZ

1899. Merge Triplets to Form Target Triplet LeetCode Solution in Python

class Solution:
  def mergeTriplets(self, triplets: list[list[int]], target: list[int]) -> bool:
    merged = [0] * len(target)

    for triplet in triplets:
      if all(a <= b for a, b in zip(triplet, target)):
        for i in range(3):
          merged[i] = max(merged[i], triplet[i])

    return merged == target
# code by PROGIEZ

Additional Resources

Happy Coding! Keep following PROGIEZ for more updates and solutions.