Pythonで合計が1である分数ペアの数をカウントするプログラム
各分数が数(分子/分母)を表す個々のリスト[分子、分母]である分数のリストがあるとします。合計が1である分数のペアの数を見つける必要があります。
したがって、入力が分数=[[2、7]、[3、12]、[4、14]、[5、7]、[3、4]、[1、4]]のような場合、出力は(2/7 + 5/7)、(3/12 + 3/4)、(3/4 + 1/4)、(4/14 + 5/7)は合計する4つのペアであるため、4になります1に。
これを解決するには、次の手順に従います。
- d:=新しい地図
- ans:=0
- 分数の各分数iについて、実行します
- x:=i[分子]
- y:=i[分母]
- g:=(x、y)のgcd
- x:=x / g
- y:=y / g
- temp_x:=y-x
- temp_y:=y
- (temp_x、temp_y)がdにある場合、
- ans:=ans + d [temp_x、temp_y]
- d [x、y]:=1 +(d [(x、y)]が利用可能な場合、それ以外の場合は0)
- 回答を返す
理解を深めるために、次の実装を見てみましょう。
サンプルコード
class Solution: def solve(self, fractions): import math d = {} ans = 0 for i in fractions: x = i[0] y = i[1] g = math.gcd(x, y) x /= g y /= g temp_x = y - x temp_y = y if (temp_x, temp_y) in d: ans += d[(temp_x, temp_y)] d[(x, y)] = d.get((x, y), 0) + 1 return ans ob = Solution() fractions = [[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]] print(ob.solve(fractions))
入力
[[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]]
出力
4
-
PythonでnノードのBSTの数をカウントするプログラム
n個の異なるノードがあるとします。すべてが異なります。二分探索木を形成するためにそれらを配置できる方法の数を見つける必要があります。二分探索木で知っているように、左側のサブツリーは常に小さい値を保持し、右側のサブツリーは大きい値を保持します。 これを解決するために、カタラン数を見つけます。カタラン数C(n)は、n個の異なるキーを持つ二分探索木を表します。式は次のようになります $$ C(n)=\ frac {(2n)!} {(n + 1)!\ times n!} $$ したがって、入力がn =3の場合、出力は5になります。 これを解決するには、次の手順に従います- 関数ncr
-
Pythonで合計がkであるパスの数をカウントするプログラム
二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな