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

Pythonで最長の連続シーケンスの長さを見つけるプログラム


並べ替えられていない数値の配列があるとすると、連続する要素の最長シーケンスの長さを見つける必要があります。

したがって、入力がnums =[70、7、50、4、6、5]の場合、連続する要素の最長シーケンスは[4、5、6、7]であるため、出力は4になります。したがって、その長さを返します:4。

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

  • nums:=numsのすべての一意の要素

  • max_cnt:=0

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

    • num-1がnumsにない場合、

      • cnt:=0

      • numがnumsに存在する間、実行します

        • num:=num + 1

        • cnt:=cnt + 1

      • max_cnt:=max_cntとcntの最大値

  • max_cntを返す

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

class Solution:
   def solve(self, nums):
      nums = set(nums)
      max_cnt = 0
      for num in nums:
         if num - 1 not in nums:
            cnt = 0
            while num in nums:
               num += 1
               cnt += 1
            max_cnt = max(max_cnt, cnt)
      return max_cnt
ob = Solution()
nums = [70, 7, 50, 4, 6, 5]
print(ob.solve(nums))

入力

[70, 7, 50, 4, 6, 5]

出力

4

  1. Pythonのn-aryツリーで最長のパスの長さを見つけるプログラム

    各アイテムが保持しているエッジリスト(u、v)があり、uがvの親であることを表しているとします。ツリー内で最も長いパスの長さを見つける必要があります。パスの長さは、1+そのパス内のノードの数です。 したがって、入力が次のような場合 パスが[1、4、5、7]であり、合計4つのノードがあるため、出力は5になります。したがって、パスの長さは1 + 4=5です。 これを解決するには、次の手順に従います- g:=指定されたエッジリストからのグラフの隣接リスト d:=新しい地図 関数bfs()を定義します。これには時間がかかります d [o]:=1 f:=o q:=[o]

  2. Pythonでバイナリツリーの最長の連続パスの長さを見つけるプログラム

    二分木があるとしましょう。二分木で最長のパスを見つける必要があります。 したがって、入力が次のような場合 連続する最長のシーケンスが[2、3、4、5、6]であるため、出力は5になります。 これを解決するには、次の手順に従います- rootがnullの場合、 0を返す maxPath:=0 関数helper()を定義します。これはノードを取ります inc:=1、dec:=1 ノードの左側がnullでない場合、 [left_inc、left_dec]:=ヘルパー(ノードの左側) それ以外の場合、 [left_inc、left_dec]:=[0、0] ノード