给定整数数组 nums 和整数 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
答案回复后可见
Eason
l1 = [3, 2, 1, 5, 6, 4] k1 = 2 l2 = [3, 2, 3, 1, 2, 4, 5, 5, 6] k2 = 4 def func(arr: list, k: int) -> int: return sorted(arr)[-k] print(func(l1, k1)) # 5 print(func(l2, k2)) # 4
来看答案的
python 不知道正不正确 不要问 问就是不会算法
from numpy import sort
def sonic(li, k): return sort(li)[-k]
tewbie
海獭🦦
yycxx
你们都没考虑一种情况,有重复数字的呢
[1,2,3,3,3,3]
k-1还是只能找到3
python3 sorted(nums, reverse=True)[k-1]
python: def test(l, k): l.sort(reverse=True) return (l[k-1])
Eason new_nums = list(set(nums)) sorted(new_nums, reverse=True)[k-1]
Eason 示例2去重后第4大的数字不应该是输出3吗 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4
abeelan k2已经不对啦
nums = [3, 2, 3, 1, 2, 4, 5, 5, 6] k = 4 nums_sort = sorted(nums, reverse=True) for index, value in enumerate(nums_sort): if (index + 1) == k: print(value) break
gwenhe 不对
def findKthLargest(nums, k): left = 0 right = len(nums) - 1 def quickSort(nums, left, right): if left < right: sentry = nums[left] i = left j = right while i != j: while nums[j] >= sentry and j > i: j -= 1 while nums[i] <= sentry and j > i: i += 1 if j > i: nums[i], nums[j] = nums[j], nums[i] nums[left] = nums[i] nums[i] = sentry quickSort(nums, left, i - 1) quickSort(nums, i + 1, right) quickSort(nums, left, right) return nums[len(nums)-k]
diandianxing 我看不懂python,不过我看答案不是你这样哦
def findKthLargest(nums, k): nums.sort() for i in range(len(nums)-1): for j in range(len(nums)-1-i): if nums[j] > nums[j+1]: nums[j+1], nums[j] = nums[j], nums[j+1] return nums[len(nums)-k]
diandianxing 也不对
海獭🦦 不对,重复元素的时候就会错了
public static void selectSort(int [] nums){ int N = nums.length; for(int i = 0; i < N; i ++){ int min = i; for(int j = i + 1; j < N; j ++){ if(nums[j] < nums[min]) min = j; } int t = nums[i]; nums[i] = nums[min]; nums[min] = t; }
}
🎲
Eason new_nums = list(set(nums)) 这步就去重啦 nums = [1,2,3,3,3,3] new_nums = list(set(nums)) -> [1, 2, 3]
不过如果是面试的话,估计面试官就让我回家等通知了😂
海獭🦦 面试的时候用内置函数,基本就拜拜啦
Eason 实在写不出来的话,也不能交白卷哇😂
海獭🦦 你这么说也不是没道理😆