Pythonでの2つの合計
整数の配列があるとします。 2つの整数のインデックスを返す必要があります。これにより、それらを合計すると、指定された特定のターゲットに到達します。ここでは、1つの仮定を取ります。つまり、配列には常に1つの一意のソリューションがあるため、同じターゲットの2つのインデックスセットは存在しません。
たとえば、配列がA =[2、8、12、15]のようで、ターゲットの合計が20であるとすると、A [1] + A [2]=20としてインデックス1と2が返されます。
これを解決するために、配列の各要素をループします。したがって、これを解決するには、次の手順に従ってください。
- resと呼ばれる結果を保持する1つのマップを定義します
- 0〜n – 1の範囲のインデックスiの場合(nは配列内の要素の数)
- ターゲットの場合-A[i]がresに存在する
- res [target −A[i]]とiをインデックスとして返す
- それ以外の場合は、res [A [i]] − =i としてiをresに入れます。
- ターゲットの場合-A[i]がresに存在する
理解を深めるために実装を見てみましょう
例
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ required = {} for i in range(len(nums)): if target - nums[i] in required: return [required[target - nums[i]],i] else: required[nums[i]]=i input_list = [2,8,12,15] ob1 = Solution() print(ob1.twoSum(input_list, 20))
入力
input_list = [2,8,12,15] target = 20
出力
[1, 2]
-
Pythonの2つの整数の合計
2つの整数aとbがあるとします。私たちの仕事は、これら2つの整数の合計を見つけることです。 1つの制約は、+や-のような演算子は使用できないということです。したがって、a=5およびb=7の場合、結果は12になります。 これを解決するには、次の手順に従います- 解決には、ビット単位の論理演算子を使用します b =0の場合、aを返します それ以外の場合は、XOR bを指定して合計関数を再帰的に使用し、結果を1回左シフトした後にANDbを使用します 例(Python) 理解を深めるために、次の実装を見てみましょう- #include <iostream> using names
-
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