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

Pythonで最初と最後の値が同じであるサブリストを見つけるためのプログラム


numsという番号のリストがあるとすると、最初の要素と最後の要素が同じであるサブリストの数を見つける必要があります。

したがって、入力がnums =[10、15、13、10]の場合、同じ最初と最後の要素を持つサブリストは[10]、[15]、[13]、[ 10]、[10、15、13、10]。

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

  • num_sublists:=numsのサイズ

  • d:=空のマップ

  • numsのnごとに、実行します

    • d [n]:=d [n] + 1

  • dの要素の数kと対応する周波数vごとに、実行します

    • vが1と同じでない場合、

      • num_sublists:=num_sublists +((v-1)*(v)/ 2の商)

  • num_sublistsを返す

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

from collections import defaultdict
class Solution:
   def solve(self, nums):
      num_sublists = len(nums)

      d = defaultdict(int)
      for n in nums:
         d[n] += 1
   
      for k,v in d.items():
         if v != 1:
            num_sublists += (v-1)*(v)//2
      return num_sublists
ob = Solution()
nums = [10, 15, 13, 10]
print(ob.solve(nums))

入力

[10, 15, 13, 10]

出力

5

  1. Pythonの最初から最後のノードまでの制限されたパスの数を見つけるプログラム

    無向加重連結グラフが1つあるとします。グラフにはn個のノードがあり、1からnまでのラベルが付けられています。開始から終了までのパスは、[z0、z1、z2、...、zk]のようなノードのシーケンスです。ここで、z0は開始ノード、zkは終了ノードであり、ziとzi+1の間にエッジがあります。ここで0<=i dist(zi + 1)(0 <=i <=k-1)も満たす特別なパスです。したがって、ノード1からノードnまでの制限されたパスの数を見つける必要があります。答えが大きすぎる場合は、10 ^ 9+7を法として答えを返します。 したがって、入力が次のような場合 3つの制限されたパス(1,2

  2. 2つのツリーをチェックするプログラムは、Pythonでの構造と値に基づいてまったく同じです。

    2分木があるとすると、構造と値がまったく同じかどうかを確認する必要があります。双子の木と言えます。 したがって、入力が次のような場合 その場合、出力は最初のペアでTrue、2番目のペアと3番目のペアでFalseになります。これは、2番目と3番目の項目が異なり、構造がそれぞれ異なるためです。 これを解決するには、次の手順に従います- メソッドsolve()を定義します。これには2つのルートが必要です root0がnullで、root1がnullの場合、 Trueを返す root0がnullまたはroot1がnullの場合、 Falseを返す