Участник:Taranov srg/Cuboids

Материал из DISCOPAL
Перейти к: навигация, поиск

https://leetcode.com/problems/maximum-height-by-stacking-cuboids/submissions/

Python3

Использую долгую сортировку списка, так как нужно сортировать иерархически сначала по одной из компонент 0 или 1, а потом по другой, если первая совпадает, сначала пробовал через numpy и argsort, но в итоге и так по времени прошло.

class Solution:
    def maxHeight(self, cuboids: List[List[int]]) -> int:
 
        import numpy as np
 
        cuboids = sorted([sorted(cub) for cub in cuboids], reverse=True)
        params = np.array(cuboids)
        depth = np.copy(params[:,2])
        result = max(depth)
        for i in range(1, params.shape[0]):
            for j in range(i):
                if np.all(np.greater_equal(params[j], params[i])):
                    depth[i] = max(depth[i], depth[j] + params[i,2])
            result = max(result, depth[i])
        return result