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

Pythonで配列の各要素の出現回数が一意かどうかを判定する方法

この記事では、Pythonを使って配列内の各要素の出現回数がすべて一意(ユニーク)であるかどうかを判定する方法を解説します。

例えば、配列 [1, 1, 2, 2, 2, 3, 4, 4, 4, 4] の場合、要素「1」は2回、「2」は3回、「3」は1回、「4」は4回出現しており、それぞれの出現回数が異なるため true を返します。逆に、同じ出現回数を持つ要素が複数存在する場合は false を返します。

解決のためのアプローチ

この問題は、次の手順で解決できます。

  • まず、配列内の各要素の出現回数(頻度)を求めます。
  • 次に、頻度マップ内の各キーと値のペアについて以下を確認します。
    • その値(出現回数)がすでに別のマップ mp に存在する場合は false を返します。
    • 存在しない場合は mp[value] := 1 として記録します。
  • すべてのチェックを通過できたら true を返します。

実装例

理解を深めるために、実際のPythonコードを見てみましょう。

class Solution(object):
    def uniqueOccurrences(self, arr):
        d = {}
        for i in arr:
            if i not in d:
                d[i] = 1
            else:
                d[i] += 1
        l = {}
        for x, y in d.items():
            if y in l:
                return False
            l[y] = 1
        return True

ob1 = Solution()
print(ob1.uniqueOccurrences([1,1,2,2,2,3,4,4,4,4]))

コードのポイント

  • 最初の辞書 d で各要素の出現回数をカウントします。
  • 2つ目の辞書 l を使い、すでに記録済みの出現回数と重複していないかをチェックします。
  • ループを最後まで抜けられれば、すべての出現回数が一意であることが確定し、true を返します。

なお、標準ライブラリの collections.Counter を使えば、頻度カウントの部分をより簡潔に記述することも可能です。

入力

[1,1,2,2,2,3,4,4,4,4]

出力

true
  1. Pythonで数値の一意な素因数の積を求める方法

    この記事では、以下の問題文に対する解決策について学びます。問題文数値 n が与えられたとき、その数値が持つすべての一意な素因数の積を求めて返します。例入力: num = 11 出力: 積は 11説明ここでは、入力された数値は 11 であり、素因数は 11 のみです。したがって、その積は 11 となります。アプローチ1:総当たり法i = 2 から n+1 までの for ループを使用し、i が n の因数であるかどうかを確認します。因数であれば、さらに i 自体が素数かどうかを判定し、素数であれば product 変数に積を格納します。この処理を i が n になるまで繰り返します。コード例de

  2. Pythonで階乗を計算する3つの方法|forループ・再帰・math.factorial()の使い方

    階乗(factorial)の計算は、データ分析をはじめとする数学的な処理において、Pythonでよく求められる操作の一つです。階乗とは、正の整数 n に対して、1から n までのすべての整数を掛け合わせた値のことです(例:5! = 1 × 2 × 3 × 4 × 5 = 120)。この記事では、Pythonで階乗を求める3つの方法を、コード例と実行結果とともにわかりやすく解説します。方法1:forループを使うforループで1から目的の数値まで順番に処理し、各ステップで掛け算を繰り返していく方法です。以下のプログラムでは、ユーザーに数値の入力を促し、ループ処理の前にint()で入力値を整数に変換