Pythonで線形時間のk番目に小さい要素を見つけるプログラム
numsという数値のリストがあり、別の値kもあるとすると、リスト内でk番目(0から始まる)の最小要素を見つける必要があります。この問題は平均してO(n)時間で解決する必要があります。
したがって、入力がnums =[6、4、9、3、1] k =2の場合、リストを並べ替えると[1、3、4、6、9]のようになり、出力は4になります。 、k番目に小さい要素は4です。
これを解決するには、次の手順に従います-
- maxHeap:=新しい空のヒープ
- 0からkの範囲のiについては、
- nums[i]をmaxHeapに挿入
- k + 1の範囲のiからnums-1のサイズまで、do
- nums [i]> maxHeap [0]の場合、
- maxHeapからトップを削除
- nums[i]をmaxHeapに挿入
- nums [i]> maxHeap [0]の場合、
- return maxHeap [0]
例
理解を深めるために、次の実装を見てみましょう-
from heapq import heappop, heappush def solve(nums, k): maxHeap = [] for i in range(k + 1): heappush(maxHeap, -nums[i]) for i in range(k + 1, len(nums)): if nums[i] < -maxHeap[0]: heappop(maxHeap) heappush(maxHeap, -nums[i]) return -maxHeap[0] nums = [6, 4, 9, 3, 1] k = 2 print(solve(nums, k))
入力
[6, 4, 9, 3, 1], 2
出力
4
-
Pythonプログラムでの線形探索
この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム 指定されたarr[]の左端の要素から開始し、要素xをarr []の各要素と1つずつ比較します。 xがいずれかの要素と一致する場合は、インデックス値を返します。 xがarr[]のどの要素とも一致しない場合は、-1を返すか、要素が見つかりません。 次に、特定のアプローチの視覚的表現を見てみましょう- 例 def linearsearch(arr, x): for i in range(len(arr)): &nbs
-
線形探索のためのPythonプログラム
この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム Start from the leftmost element of given arr[] and one by one compare element x with each element of arr[] If x matches with any of the element, return the index value. If x doesn’t match with any of elements in arr[] , return -1 or element no