2021-01-26

215、数组中的第k个最大元素

class Solution:

    def findKthLargest(self, nums: List[int], k: int) -> int:

        if len(nums) == 1: return nums[0]

        mid = int(len(nums) // 2)

        left, right, mids = [], [], []

        for i in range(len(nums)):

            if nums[i] > nums[mid]:

                left.append(nums[i])

            elif nums[i] < nums[mid]:

                right.append(nums[i])

            else:

                mids.append(nums[i])

        if len(left) >= k:

            return  self.findKthLargest(left, k)

        elif len(mids) >= k - len(left):

            return nums[mid]

        else:

            return self.findKthLargest(right, k - len(left) - len(mids))

217、存在重复元素

class Solution:

    def containsDuplicate(self, nums: List[int]) -> bool:

        return len(set(nums)) < len(nums)

230、二叉搜索树中第K小的元素

# Definition for a binary tree node.

# class TreeNode:

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution:

    def kthSmallest(self, root: TreeNode, k: int) -> int:

        def gen(r):

            if r is not None:

                yield from gen(r.left)

                yield r.val

                yield from gen(r.right)


        it = gen(root)

        for _ in range(k):

            ans = next(it)

        return ans

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 两数相加 #Definitionforsingly-linkedlist. #classListNode: #de...
    wu_liao阅读 760评论 0 0
  • 23、合并K个升序链表 #Definitionforsingly-linkedlist. #classListNo...
    wu_liao阅读 734评论 0 0
  • 二叉树是否是其子结构 从根节点开始,不是,看左节点,再看有节点 链表合并 翻转链表 链表找入口 链表蛇形打印 数组...
    slyxk阅读 2,629评论 0 0
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 3,418评论 0 0
  • 夜莺2517阅读 127,810评论 1 9