Leetcode習題陣列中的第K個最大值
阿新 • • 發佈:2021-01-27
陣列中的第K個最大值
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
n=len(nums)
target=n-k
left=0
right=n-1
while True:
index=self.partition(nums,left,right)
if index==target:
return nums[index]
elif index<target:
left=index+1
else:
right=index-1
def partition(self,nums,left,right):
pivot=nums[left] #選定一個分割點
i=left
for j in range(left+1,right+1):
if nums[j]< pivot:
i+=1
nums[j],nums[i]=nums[i],nums[j]
nums[left],nums[i]=nums[i],nums[left]
return i
存在重複元素
```python
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums)!=len(set(nums))
二叉搜尋樹中的第K小的元素
class Solution :
def kthSmallest(self, root: TreeNode, k: int) -> int:
def inorder(r):
return inorder(r.left)+[r.val]+inorder(r.right) if r else []
return inorder(root)[k-1]