Pythonの2つの整数の合計
2つの整数aとbがあるとします。私たちの仕事は、これら2つの整数の合計を見つけることです。 1つの制約は、+や-のような演算子は使用できないということです。したがって、a=5およびb=7の場合、結果は12になります。
これを解決するには、次の手順に従います-
- 解決には、ビット単位の論理演算子を使用します
- b =0の場合、aを返します
- それ以外の場合は、XOR bを指定して合計関数を再帰的に使用し、結果を1回左シフトした後にANDbを使用します
例(Python)
理解を深めるために、次の実装を見てみましょう-
#include <iostream> using namespace std; class Solution { public: int getSum(int a, int b) { return b == 0?a:getSum(a^b, (unsigned int)(a&b)<<1); } }; main(){ Solution ob; cout<<ob.getSum(5,7)<<endl; }
入力
a = 5 b = 7
出力
12
-
Pythonでのパスの合計
1つのツリーと合計があるとします。そのパスをたどると、与えられた合計と一致する合計が得られるように、1つのパスを見つける必要があります。ツリーが[0、-3,9、-10、null、5]のようで、合計が14であるとすると、パス0→9→5があります。 これを解決するために、次の手順に従います。 ルートがnullの場合は、Falseを返します 左右のサブツリーが空の場合、sum – root.val =0の場合はtrueを返し、それ以外の場合はfalseを返します 戻り値solve(root.left、sum – root.val)またはsolve(root.right、su
-
Pythonで整数の文字列を複素数に解凍するにはどうすればよいですか?
文字列には、カンマで区切られた2つの整数が含まれています。最初に、数字を持つ2つの文字列のリストに分割されます。 >>> s="1,2".split(",") >>> s ['1', '2'] 次に、2つの項目が整数に変換され、complex()関数の引数として使用されます >>> complex(int(s[0]), int(s[1])) (1+2j) これにより、複素数の整数の文字列が解凍されます