Pythonでnのバイナリ形式で1の最長連続実行を見つけるプログラム
負でない値nがあるとすると、バイナリ表現で1の最長連続実行の長さを見つける必要があります。
したがって、入力がn =1469の場合、156のバイナリ表現は「10110111101」であるため、出力は4になり、4つの連続した1があります
これを解決するには、次の手順に従います-
- count:=0
- nは0と同じではありませんが、
- n:=n AND(1ビット左にシフトした後のn)
- count:=count + 1
- 返品数
例
理解を深めるために、次の実装を見てみましょう-
def solve(n): count = 0 while n != 0: n = n & (n << 1) count = count + 1 return count n = 1469 print(solve(n))
入力
1469
出力
4
-
Pythonでバイナリツリーのルートからリーフまでの最長の合計パスの合計を見つけるプログラム
二分木があるとすると、ルートからリーフノードまでの最長パスの合計を見つける必要があります。同じ長いパスが2つある場合は、合計が大きいパスを返します。 したがって、入力が次のような場合 その場合、出力は20になります。 これを解決するには、次の手順に従います- 関数rec()を定義します。これには時間がかかります currがnullの場合、 return(0、0) 大きい:=rec(currの左側)の最大値、rec(currの右側) ペアを返します(bigger [0] + 1、bigger [1] + currの値) メインの方法から、次のよ
-
Pythonで二分木の最長の偶数値パスを見つけるプログラム
二分木があるとすると、ツリー内の任意の2つのノード間の偶数の値で構成される最長のパスを見つける必要があります。 したがって、入力が次のような場合 最長のパスが[10、2、4、8、6]であるため、出力は5になります。 これを解決するには、次の手順に従います- ans:=0 関数find()を定義します。これはノードを取ります ノードがnullの場合、 戻り値(-1、-1) leftCnt:=find(ノードの左側)の戻り値の最大値+ 1 rightCnt:=find(ノードの右側)の戻り値の最大値+ 1 ノードの値が偶数の場合、