Pythonでサイズkの増加するサブシーケンスの数を見つけるプログラム
numsと呼ばれる数のリストと別の値kがあるとすると、厳密に増加しているサイズkのサブシーケンスの数を見つける必要があります。答えが非常に大きい場合は、10 ^ 9+7で変更します。
したがって、入力がnums =[2、3、4、1] k =2のような場合、サイズ2のサブシーケンスがあるため、出力は3になります。[2、3]、[3、4]、 [2、4]。
これを解決するには、次の手順に従います-
- m:=10 ^ 9 + 7
- dp:=numsと同じサイズのリストで、1を入力します
- 次のk回繰り返します。
- dp-1から0の範囲サイズのjの場合、1ずつ減らします。
- dp [j]:=0
- 0からjの範囲のiについては、
- nums [i]
- dp [j]:=dp [j] + dp [i]
- nums [i]
- dp-1から0の範囲サイズのjの場合、1ずつ減らします。
例(Python)
理解を深めるために、次の実装を見てみましょう-
class Solution: def solve(self, nums, k): m = 10 ** 9 + 7 dp = [1] * len(nums) for _ in range(k - 1): for j in range(len(dp) - 1, -1, -1): dp[j] = 0 for i in range(j): if nums[i] < nums[j]: dp[j] += dp[i] return sum(dp) % m ob = Solution() nums = [2, 3, 4, 1] k = 2 print(ob.solve(nums, k))
入力
[2, 3, 4, 1], 2
出力
3
-
Pythonで範囲内のノード数を見つけるプログラム
BSTがあり、左と右の境界lとrもあるとすると、lとrの間に値が存在するルート内のすべてのノードの数を見つける必要があります。 したがって、入力が次のような場合 l =7、r =13の場合、8、10、12の3つのノードがあるため、出力は3になります。 これを解決するために、次の手順に従います- スタック:=スタックと最初にルートを挿入し、カウント:=0 スタックが空でないときに、実行します node:=スタックの最上位要素、およびポップ要素 ノードがnullでない場合、 l<=ノードのデータ<=rの場合、 count:=count + 1
-
リスト内で最大数を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: