亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

python怎么實現leetcode求第k大的數

小億
129
2023-10-16 10:17:46
欄目: 編程語言

可以使用快速選擇算法來實現求第k大的數。快速選擇算法的思想是基于快速排序,通過每次將數組劃分為兩個部分,將選定的元素放在正確的位置上,從而找到第k大的數。

下面是使用快速選擇算法實現求第k大的數的Python代碼:

def partition(nums, left, right):
pivot = nums[left]
i = left + 1
j = right
while True:
while i <= j and nums[i] >= pivot:
i += 1
while i <= j and nums[j] <= pivot:
j -= 1
if i <= j:
nums[i], nums[j] = nums[j], nums[i]
else:
break
nums[left], nums[j] = nums[j], nums[left]
return j
def findKthLargest(nums, k):
left = 0
right = len(nums) - 1
while True:
pos = partition(nums, left, right)
if pos == k - 1:
return nums[pos]
elif pos > k - 1:
right = pos - 1
else:
left = pos + 1

使用示例:

nums = [3, 2, 1, 5, 6, 4]
k = 2
result = findKthLargest(nums, k)
print(result)  # 輸出: 5

在以上示例中,我們給定了一個數組nums和一個整數k,然后調用findKthLargest函數來求第k大的數。輸出結果為5,表示數組nums中第2大的數為5。

0
安塞县| 偃师市| 土默特右旗| 翁牛特旗| 如东县| 铁力市| 瓦房店市| 黑河市| 衡水市| 平凉市| 贵南县| 澄迈县| 桃园县| 丹江口市| 塘沽区| 平武县| 图片| 高唐县| 鄯善县| 辽阳县| 韶关市| 井陉县| 集贤县| 驻马店市| 师宗县| 庆阳市| 会宁县| 商丘市| 鸡西市| 乾安县| 秀山| 奎屯市| 黄浦区| 东丽区| 中超| 广宗县| 太保市| 彭水| 广汉市| 延津县| 常宁市|