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

Pythonで最初のセットの要素が2番目のセットよりも小さいセットを等しい合計セットに分割するプログラム


numsと呼ばれる数値のリストがあるとすると、次のようにリストを2つのグループAとBに分割できるかどうかを確認する必要があります。Aの合計とBの合計が同じである。ここで、Aのすべての数値は、Bのすべての数値よりも厳密に小さくなっています。

したがって、入力がnums =[3、4、5、12]のような場合、A=[3,4,5]とB=[12]があり、両方の合計が12であるため、出力はTrueになります。 。

これを解決するには、次の手順に従います-

  • リスト番号を並べ替える

  • total:=numsのすべての要素の合計

  • s:=0、i:=0

  • 私は

    • n:=nums [i]

    • i

      • s:=s + nums [i]

      • i:=i + 1

    • sがtotal− sと同じ場合、

      • Trueを返す

  • Falseを返す

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

class Solution:
   def solve(self, nums):
      nums.sort()
      total = sum(nums)
      s = 0
      i = 0
      while i < len(nums):
         n = nums[i]
         while i < len(nums) and nums[i] == n:
            s += nums[i]
            i += 1
         if s == total - s:
            return True
      return False
ob = Solution()
nums = [3, 4, 5, 12]
print(ob.solve(nums))

入力

[3, 4, 5, 12]

出力

True

  1. Pythonで特定の操作を実行してすべての要素を等しくするプログラム

    numsと呼ばれる数値のリストを指定したとすると、値を等しくしたいとします。次に、リストから1つの要素を選択し、1つおきの値をインクリメントする操作を行います。要素の値を等しくするために必要な操作の最小数を見つける必要があります。 したがって、入力が[2、4、5]の場合、出力は5になります。 これを解決するには、次の手順に従います- min_val:=最小数 s:=0 numsの各numについて、実行します s:=s +(num --min_val) return s 理解を深めるために、次の実装を見てみましょう- 例 class Solution:  

  2. 要素数をカウントするプログラムがPythonの正しい位置に配置されている

    numsという数字のリストがあるとすると、リストを並べ替えるときに、正しいインデックスに存在する要素の数を見つける必要があります。 したがって、入力が[2、8、4、5、11]の場合、要素2と11は正しい位置にあるため、出力は2になります。ソートされたシーケンスは[2、4、5、8、11]になります これを解決するには、次の手順に従います- s:=リスト番号を並べ替える count:=0 0からnumsのサイズの範囲のiの場合は、 s[i]がnums[i]と同じ場合、 count:=count + 1 返品数 理解を深めるために、次の実装を見てみましょう- 例 cl