PythonでK-sumペアの最大数を見つけるプログラム
numsという配列と別の値kがあるとします。 1つの操作で、合計がkに等しいnumsから2つの要素を選択し、それらを配列から削除できます。アレイで実行できる操作の最大数を見つける必要があります。
したがって、入力がnums =[8,3,6,1,5] k =9のような場合、合計が9である[3,6]を削除してから、[8,1]を削除できるため、出力は2になります。 ]その合計も9です。
これを解決するには、次の手順に従います-
- counter:=numで表示される各アイテムの頻度を保持するマップ
- res:=0
- カウンターのnumごとに、
- を実行します。
- counter [k-num]がゼロ以外の場合、
- numがk-numと同じでない場合、
- res:=res +counter[num]とcounter[k-num]の最小値
- counter [k-num]:=0
- counter [num]:=0
- それ以外の場合、
- res:=res +(counter [num] / 2)の商
- numがk-numと同じでない場合、
- counter [k-num]がゼロ以外の場合、
- return res
例
理解を深めるために、次の実装を見てみましょう-
from collections import Counter def solve(nums, k): counter = Counter(nums) res = 0 for num in counter: if counter.get(k-num, 0): if num != k - num: res += min(counter[num], counter[k-num]) counter[k-num] = 0 counter[num] = 0 else: res += int(counter[num] / 2) return res nums = [8,3,6,1,5] k = 9 print(solve(nums, k))
入力
[8,3,6,1,5], 9
出力
2
-
Pythonで範囲内のノード数を見つけるプログラム
BSTがあり、左と右の境界lとrもあるとすると、lとrの間に値が存在するルート内のすべてのノードの数を見つける必要があります。 したがって、入力が次のような場合 l =7、r =13の場合、8、10、12の3つのノードがあるため、出力は3になります。 これを解決するために、次の手順に従います- スタック:=スタックと最初にルートを挿入し、カウント:=0 スタックが空でないときに、実行します node:=スタックの最上位要素、およびポップ要素 ノードがnullでない場合、 l<=ノードのデータ<=rの場合、 count:=count + 1
-
リスト内の最小数を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal