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

Pythonですべての偶数と奇数をそれぞれ昇順と降順で並べ替えるプログラム


numsという数値のリストがあるとすると、次の基準を維持して配列を並べ替える必要があります

  • 偶数は昇順で並べ替えられます
  • 奇数は降順で並べ替えられます
  • 偶数と奇数の相対位置は変更しないでください。

したがって、入力が[9、14、12、91、-4、5]の場合、出力は[91、-4、12、9、14、5]

になります。

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

  • evens:=nums配列内の偶数項のリスト
  • odds:=nums配列の奇数項のリスト
  • リストを均等に並べ替える
  • even_i:=0、odd_i:=0
  • 0からnumsのサイズの範囲のインデックスの場合は、
    • nums [index] mod 2が0と同じ場合、
      • nums [index]:=evens [even_i]
      • even_i:=even_i + 1
    • それ以外の場合、
      • nums [index]:=オッズ[odd_i]
      • odd_i:=odd_i + 1
  • 数値を返す

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

class Solution:
   def solve(self, nums):
      evens = [num for num in nums if num % 2 == 0]
      odds = [num for num in nums if num % 2 != 0]
      evens.sort()
      odds.sort(reverse=True)
      even_i = 0
      odd_i = 0
      for index in range(len(nums)):
         if nums[index] % 2 == 0:
            nums[index] = evens[even_i]
            even_i += 1
         else:
            nums[index] = odds[odd_i]
            odd_i += 1
      return nums
ob = Solution()
print(ob.solve([9, 14, 12, 91, -4, 5]))

入力

[9, 14, 12, 91, -4, 5]

出力

[91, -4, 12, 9, 14, 5]

  1. 奇数桁と偶数桁の合計の差のためのPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 −整数の場合、奇数桁の合計と偶数桁の合計の差が0であるかどうかを計算する必要があります。 ブルートフォースアプローチでは、数値のすべての偶数桁と奇数桁の合計を計算し、それらを減算して答えを計算します。 計算時間を短縮するために、精神数学の概念を使用します。 上記の制約は、数値が11で割り切れる場合にのみ当てはまります。したがって、以下の実装では、数値の11で割り切れる可能性を確認します。 ここで、複雑さはO(n)から、分割可能性と比較に関係する一定の時間に減少します。 それでは

  2. タプルを任意のキーで昇順でソートするPythonプログラム。

    タプルが与えられた場合、私たちのタスクは、タプルのリストをタプル内の任意のキーで昇順で並べ替えることです。任意のキーに従ってそれらをソートする必要があります。これを行うには、sorted()関数を使用して、key =lastを使用してそれらをソートし、指定されたタプルをソートする必要があるキーインデックスとしてlastを格納します。 例 Input: A = [(2, 55), (1, 20), (4, 40), (2, 30)] k = 0 Output: [(1, 20), (2, 30), (2, 55), (4, 40)] 説明 0番目のインデックスキー