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

PythonのHouseRobber


都市があり、都市の各家に一定の金額があるとします。ある強盗は一晩でお金を奪いたいと思っています。市には1つのセキュリティシステムがあります。つまり、同じ夜に2つの連続した家が壊れた場合、自動的に警察に通報します。だから私たちは強盗が奪うことができる最大量を見つける必要がありますか?

1つの配列が提供されます。インデックスiで、A[i]はi番目の家に存在する量です。配列が次のようになっていると仮定します:A =[2、7、10、3、1]、結果は13になります。最大値はhouse1(値2)、house3(値10)、およびhouse5(値1)から取得されます。 )、合計は13

これを解決するために、このアプローチに従います-

  • prev1:=0およびprev2=0を取得
  • i=0からAの長さ-
    • temp:=prev1
    • prev1:=prev2 +A[i]およびprev1の最大値
    • prev2 =temp
  • prev1を返す

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

class Solution(object):
   def rob(self, nums):
      """
      :type nums: List[int]
      :rtype: int
      """
      prev2 = 0
      prev1 = 0
      for i in range(0,len(nums)):
         temp = prev1
         prev1 = max(prev2+nums[i],prev1)
         prev2 = temp
      return prev1
ob1 = Solution()
print(ob1.rob([2,7,10,3,1]))

入力

nums = [2,7,10,3,1]

出力

13

  1. C++でのHouseRobberIII

    ある泥棒が再び自分の泥棒の新しい場所を見つけたとします。このエリアへの入り口は1つだけで、入り口は「ルート」と呼ばれます。ルートのほかに、各家には1つだけの親の家があります。ツアーの後、賢い泥棒は「この場所のすべての家が二分木を形成している」と感じました。また、直結した2軒の家が同じ夜に侵入された場合は自動的に警察に連絡します。泥棒が警察に警告せずに今夜奪うことができる最大の金額を見つけなければなりません。したがって、ツリーが次のような場合- その場合、出力は7になります。 これを解決するには、次の手順に従います- solve()と呼ばれるメソッドを定義します。これはノードを取

  2. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',