ペアの合計をチェックするデータ構造を作成するプログラムはPythonの値と同じです
2つのメソッドを持つデータ構造を作成するとします-
- add(val)これにより、値valがデータ構造に追加されます
- find(val)これは、合計がvalである要素が2つあるかどうかをチェックします
その場で結果を得ることができるように、これを設計する必要があります。クエリが来るたびに番号を検索することはありません。
したがって、入力がオブジェクトobjを作成し、いくつかの数値6、14、3、8、11、15を追加するようなものである場合は、obj.find(9)、obj.find(11)、obj.find(15)、 9は6+3で形成でき、11は3 + 8で形成できるため、出力はTrue、True、Falseになります。現在、15はデータ構造に存在しますが、2つの数値の合計は15と同じです。
これを解決するには、次の手順に従います-
- コンストラクターを定義します。
- nums:=新しいセット
- 複数:=新しいセット
- 関数add()を定義します。これにはval
- が必要です
- valを複数に挿入
- それ以外の場合、
- valをnumsに挿入
- 関数find()を定義します。これにはvalが必要です
- numsのnごとに、
- n + nがvalと同じ場合、
- nが複数の場合はtrueを返します
- それ以外の場合、val --nがnumsの場合、
- Trueを返す
- n + nがvalと同じ場合、
- Falseを返す
例
理解を深めるために、次の実装を見てみましょう-
class PairSumChecker: def __init__(self): self.nums = set() self.multiple = set() def add(self, val): if val in self.nums: self.multiple.add(val) else: self.nums.add(val) def find(self, val): for n in self.nums: if n + n == val: return n in self.multiple elif val - n in self.nums: return True return False obj = PairSumChecker() obj.add(6) obj.add(14) obj.add(3) obj.add(8) obj.add(11) obj.add(15) print(obj.find(9)) print(obj.find(11)) print(obj.find(15))
入力
print(obj.find(9)) print(obj.find(11)) print(obj.find(15))
出力
True True False
-
葉を除く各ノードの値がPythonでその子の値の合計であるかどうかを確認するプログラム
二分木があるとすると、葉を除くツリー内のすべてのノードについて、その値が左の子の値と右の子の値の合計と同じであるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- 関数dfs()を定義します。これが定着します ルートがnullの場合、 Trueを返す ルートの左側がnullで、ルートの右側がnullの場合、 Trueを返す 左:=0 ルートの左側がnullでない場合、 left:=ルートの左側の値 右:=0 ルー
-
巡回冗長検査へのPythonプログラム
デジタルデータのエラーを検出するためにCRCが使用され、これは伝送エラーを検出するための優れた手法です。この手法では、主に2進除算が適用されます。 これらの手法では、冗長ビットのシーケンスである巡回冗長検査ビットが存在します。これらのビットはデータユニットの末尾に追加されるため、結果のデータユニットは所定の2進数である1秒で正確に割り切れます。 宛先側では、受信データが同じ数で除算されます。余りがない場合は、データが正しく、受け入れる準備ができていると見なされます。 残りは、移行中に何かが発生したことを示し、データユニットが損傷しています。したがって、このデータユニットは受け入れられませ