列表

详情


1899. 合并若干三元组以形成目标三元组

三元组 是一个由三个整数组成的数组。给你一个二维整数数组 triplets ,其中 triplets[i] = [ai, bi, ci] 表示第 i三元组 。同时,给你一个整数数组 target = [x, y, z] ,表示你想要得到的 三元组

为了得到 target ,你需要对 triplets 执行下面的操作 任意次(可能 次):

如果通过以上操作我们可以使得目标 三元组 target 成为 triplets 的一个 元素 ,则返回 true ;否则,返回 false

 

示例 1:

输入:triplets = [[2,5,3],[1,8,4],[1,7,5]], target = [2,7,5]
输出:true
解释:执行下述操作:
- 选择第一个和最后一个三元组 [[2,5,3],[1,8,4],[1,7,5]] 。更新最后一个三元组为 [max(2,1), max(5,7), max(3,5)] = [2,7,5] 。triplets = [[2,5,3],[1,8,4],[2,7,5]]
目标三元组 [2,7,5] 现在是 triplets 的一个元素。

示例 2:

输入:triplets = [[1,3,4],[2,5,8]], target = [2,5,8]
输出:true
解释:目标三元组 [2,5,8] 已经是 triplets 的一个元素。

示例 3:

输入:triplets = [[2,5,3],[2,3,4],[1,2,5],[5,2,3]], target = [5,5,5]
输出:true
解释:执行下述操作:
- 选择第一个和第三个三元组 [[2,5,3],[2,3,4],[1,2,5],[5,2,3]] 。更新第三个三元组为 [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]] 。
- 选择第三个和第四个三元组 [[2,5,3],[2,3,4],[2,5,5],[5,2,3]] 。更新第四个三元组为 [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]] 。
目标三元组 [5,5,5] 现在是 triplets 的一个元素。

示例 4:

输入:triplets = [[3,4,5],[4,5,6]], target = [3,2,5]
输出:false
解释:无法得到 [3,2,5] ,因为 triplets 不含 2 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool mergeTriplets(vector<vector<int>>& triplets, vector<int>& target) { } };

golang 解法, 执行用时: 260 ms, 内存消耗: 22.5 MB, 提交时间: 2022-11-28 14:22:19

func mergeTriplets(a [][]int, t []int) bool {
	found := [3]bool{}
	for _, p := range a {
		if p[0] <= t[0] && p[1] <= t[1] && p[2] <= t[2] {
			found[0] = found[0] || p[0] == t[0]
			found[1] = found[1] || p[1] == t[1]
			found[2] = found[2] || p[2] == t[2]
		}
	}
	return found[0] && found[1] && found[2]
}

python3 解法, 执行用时: 176 ms, 内存消耗: 41.8 MB, 提交时间: 2022-11-28 14:21:51

class Solution:
    def mergeTriplets(self, triplets: List[List[int]], target: List[int]) -> bool:
        x, y, z = target
        a, b, c = 0, 0, 0
        
        for ai, bi, ci in triplets:
            if ai <= x and bi <= y and ci <= z:
                a, b, c = max(a, ai), max(b, bi), max(c, ci)
        
        return (a, b, c) == (x, y, z)

上一题