Python
 Computer >> コンピューター >  >> プログラミング >> Python

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に入れます。

理解を深めるために実装を見てみましょう

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]

  1. Pythonの2つの整数の合計

    2つの整数aとbがあるとします。私たちの仕事は、これら2つの整数の合計を見つけることです。 1つの制約は、+や-のような演算子は使用できないということです。したがって、a=5およびb=7の場合、結果は12になります。 これを解決するには、次の手順に従います- 解決には、ビット単位の論理演算子を使用します b =0の場合、aを返します それ以外の場合は、XOR bを指定して合計関数を再帰的に使用し、結果を1回左シフトした後にANDbを使用します 例(Python) 理解を深めるために、次の実装を見てみましょう- #include <iostream> using names

  2. 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