1 #215-数组中的第K个最大元素
-
题目:
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。- 示例1:
输入: [3,2,1,5,6,4] 和 k = 2 输出: 5
- 示例2:
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4
-
分析:
-
答案:
class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: return heapq.nlargest(k, nums)[-1] # [6,5]
2 #217-存在重复元素
-
题目:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。- 示例1:
输入: [1,2,3,1] 输出: true
- 示例2:
输入: [1,2,3,4] 输出: false
-
分析:
首先set(nums),集合会直接删除重复元素
然后判断集合是否和列表等长,等长返回False 不等长说明有重复数,返回True -
答案:
class Solution: def containsDuplicate(self, nums: List[int]) -> bool: return not len(nums) == len(set(nums))
3 #230-二叉搜索树中第K小的元素
- 题目:
给定一个二叉搜索树,编写一个函数kthSmallest
来查找其中第 k 个最小的元素
说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。- 示例1:
输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 1
- 示例2:
输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 3
- 分析:
递归 - 答案:
class Solution: def kthSmallest(self, root, k): """ :type root: TreeNode :type k: int :rtype: int """ def inorder(r): return inorder(r.left) + [r.val] + inorder(r.right) if r else [] return inorder(root)[k - 1]