我是靠谱客的博主 陶醉芹菜,最近开发中收集的这篇文章主要介绍【LeetCode】406 and 744,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

406.根据身高重建队列

在这里插入图片描述
在这里插入图片描述
解法:排序+插入
题目描述:整数对 (h, k) 表示,其中 h 是这个人的身高,k 是排在这个人前面且身高大于或等于 h 的人数。
套路:一般这种数对,还涉及排序的,根据第一个元素正向排序,根据第二个元素反向排序,或者根据第一个元素反向排序,根据第二个元素正向排序,往往能够简化解题过程。
在本题目中,我首先对数对进行排序,按照数对的元素 1 降序排序,按照数对的元素 2 升序排序。原因是,按照元素 1 进行降序排序,对于每个元素,在其之前的元素的个数,就是大于等于他的元素的数量,而按照第二个元素正向排序,我们希望 k 大的尽量在后面,减少插入操作的次数。
参考题解

class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        res = []
        people = sorted(people, key = lambda x: (-x[0], x[1]))
        for p in people:
            if len(res) <= p[1]:
                res.append(p)
            elif len(res) > p[1]:
                res.insert(p[1], p)
        return res

重要方法:
List.insert(position, list)
sorted函数多关键词排序

744.寻找比目标字母大的最小字母

在这里插入图片描述
解法:记录存在的字母/扫描
利用集合记录存在的字母,再判断是否存在target大的字母
扫描是同样的思想。
解法2:二分查找
在这里插入图片描述

class Solution:
    def nextGreatestLetter(self, letters: List[str], target: str) -> str:
        length = len(letters)
        l, h = 0, length - 1
        while l <= h:
            m = l + (h - l)//2
            if letters[m] > target:
                h = m - 1
            else:
                l = m + 1
        return letters[l % length]

最后

以上就是陶醉芹菜为你收集整理的【LeetCode】406 and 744的全部内容,希望文章能够帮你解决【LeetCode】406 and 744所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部