Loading

[Python手撕]马戏团人塔

class Solution:
    def bestSeqAtIndex(self, height: List[int], weight: List[int]) -> int:


        n = len(height)
        persons = [[height[i],weight[i]] for i in range(n)]

        persons.sort(key=lambda x: x[0])

        n = len(persons)
        dp = [1] * n

        for i in range(n):
            for j in range(i):
                if persons[i][0] > persons[j][0] and persons[i][1] > persons[j][1]:
                    dp[i] = max(dp[i], dp[j] + 1)

        return max(dp)
class Solution:
    def bestSeqAtIndex(self, height: List[int], weight: List[int]) -> int:

        n = len(height)
        people = [[height[i], weight[i]] for i in range(n)]
        people.sort(key=lambda x: (x[0],-x[1]))

        # 用于存储体重的LIS
        lis = []

        for _, weight in people:
            pos = bisect_left(lis, weight)
            # 如果pos等于lis的长度,说明weight比lis中所有元素都大,可以加入
            if pos == len(lis):
                lis.append(weight)
            else:
                # 否则更新lis中位置pos的值
                lis[pos] = weight

        return len(lis)

class Solution:
    def bestSeqAtIndex(self, height: List[int], weight: List[int]) -> int:

        def find(nums, target):
            left = 0
            right = len(nums)
            res = -1
            while left <= right:
                mid = (left + right) // 2
                if nums[mid] >= target:
                    res = mid
                    right = mid - 1
                else:
                    left = mid + 1
            return res

        n = len(height)
        person = [[height[i], weight[i]] for i in range(n)]
        person.sort(key=lambda x: (x[0], -x[1]))

        queue = [person[0][1]]
        for i in range(1, n):
            if person[i][1] > queue[-1]:
                queue.append(person[i][1])
            else:
                index = find(queue, person[i][1])
                queue[index] = person[i][1]

        return len(queue)
posted @   Duancf  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示