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

Pythonで1つの要素のみを削除した後、最大値と最小値を含むサブリストの数を見つけるプログラム


numsという番号のリストがあり、リスト内の最大1つの要素を削除できるとします。結果のリストの最大値と最小値の両方を含むサブリストの最大数を見つける必要があります。

したがって、入力がnums =[3、2、6、2、4、10]のような場合、出力は8になります。10を削除すると、[3、2、6、2、4]が得られます。最大値と最小値の両方を含む8つのサブリストがあります-

  • [2、6]

  • [6、2]

  • [2、6、2]

  • [3、2、6]

  • [6、2、4]

  • [2、6、2、4]

  • [3、2、6、2]

  • [3、2、6、2、4]。

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

  • 関数check()を定義します。これには時間がかかります

  • mn:=lstの最小値、mx:=lstの最大値

  • min_pos:=null、max_pos:=null

  • ret:=0

  • lstの各インデックスiと値numについて、実行します

    • numがmnと同じ場合、

      • min_pos:=i

    • numがmxと同じ場合、

      • max_pos:=i

    • min_posがnullまたはmax_posがnullの場合、

      • 次のイテレーションに行く

    • ret:=ret + min_posの最小値と(max_pos + 1)

  • retを返す

  • メインの方法から、次のようにします-

  • numsのサイズが<=1の場合、

    • numsのサイズを返す

  • ret:=check(nums)

  • [最小nums、最大nums]の各rem_candに対して、実行

    • rem_candの出現が1の場合、

      • idx:=rem_candの数値単位のインデックス

      • ret:=retの最大値とcheck(nums[インデックス0からidx-1まで]はnums[インデックスidx+1から終了まで]を連結します

  • retを返す

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

class Solution:
   def solve(self, nums):
      if len(nums) <= 1:
         return len(nums)
      def check(lst):
         mn, mx = min(lst), max(lst)
         min_pos, max_pos = None, None
         ret = 0
         for i, num in enumerate(lst):
            if num == mn:
               min_pos = i
            if num == mx:
               max_pos = i
            if min_pos is None or max_pos is None:
               continue
            ret += min(min_pos, max_pos) + 1
         return ret
      ret = check(nums)
      for rem_cand in [min(nums), max(nums)]:
         if nums.count(rem_cand) == 1:
            idx = nums.index(rem_cand)
            ret = max(ret, check(nums[:idx] + nums[idx + 1 :]))
      return ret
ob = Solution()
nums = [3, 2, 6, 2, 4, 10]
print(ob.solve(nums))

入力

[3, 2, 6, 2, 4, 10]

出力

8

  1. Pythonでマージした後も、最小数の色を見つけるプログラムが残っています

    色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(

  2. リスト内の最大要素と最小要素の位置を見つけるPythonプログラム?

    Pythonでは、最大要素、最小要素、およびそれらの位置も非常に簡単に見つけることができます。 Pythonはさまざまな組み込み関数を提供します。 min()は配列の最小値を見つけるために使用され、max()は配列の最大値を見つけるために使用されます。 index()は、要素のインデックスを見つけるために使用されます。 アルゴリズム maxminposition(A, n) /* A is a user input list and n is the size of the list.*/ Step 1: use inbuilt function for finding the positi