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

Pythonでリストを連続して増加するサブリストに分割できるかどうかを確認するプログラム


numsと呼ばれる番号のリストがあり、それが降順ではない順序でソートされているとすると、各サブシーケンスの長さが3以上で、連続して増加するように、任意の数のサブシーケンスに分割できるかどうかを確認する必要があります。

したがって、入力がnums =[2、3、4、4、5、6、7]のような場合、リストを[2、3、4]と[4、 5、6、7]。

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

  • counts:=numsの要素とそのカウントを含むマップ
  • 開始:=新しいリスト
  • 終了:=新しいリスト
  • カウントの項目の各xについて、ソートされた順序で実行します
    • count [x]> count [x-1]の場合、
      • l:=サイズのリスト(count [x] --count [x-1])およびxで埋める
      • スタートにlを挿入
    • count [x]> count [x + 1]の場合、
      • l:=サイズのリスト(count [x] --count [x + 1])およびxで埋める
      • スタートにlを挿入
  • すべての(開始、終了)ペアが(開始+ 2 <=終了)を満たす場合はtrueを返し、それ以外の場合はfalseを返します

例(Python)

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

from collections import Counter
class Solution:
   def solve(self, nums):
      count = Counter(nums)
      starts = []
      ends = []
      for x in sorted(count):
         if count[x] > count[x - 1]:
            starts.extend([x] * (count[x] - count[x - 1]))
         if count[x] > count[x + 1]:
            ends.extend([x] * (count[x] - count[x + 1]))
      return all(s + 2 <= e for s, e in zip(starts, ends))
ob = Solution()
nums = [2, 3, 4, 4, 5, 6, 7]
print(ob.solve(nums))

入力

[6, 7, 5, 10, 13], 2

出力

True

  1. 与えられたブロックのリストがPythonでx=y行に対して対称であるかどうかをチェックするプログラム

    numsという番号のリストがあるとします。そして、それは正方形のブロックの高さを表しています。形状がy=xの線上で対称であるかどうかを確認する必要があります。 したがって、入力がnums =[7、5、3、2、2、1、1]のような場合、出力はTrueになります これを解決するには、次の手順に従います。 i:=0 j:=numsのサイズ-1 i <=jの場合、do h:=nums [j] i

  2. リストが空かどうかをチェックするPythonプログラム?

    空のリストが与えられました。私たちの仕事は、このリストが空かどうかを確認することです。ここでチェックするのは暗黙のチェック方法です。 アルゴリズム Step 1: We take an empty list. Step 2: then check if list is empty then return 1 otherwise 0. サンプルコード # Python code to check for empty list def checklist(A): if not A: return 1 else: return 0 # Driver