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

Pythonの並べ替えられた配列で数値が多数決要素であるかどうかを確認する


numsという名前の配列があり、降順ではない順序で並べ替えられ、数値ターゲットがあるとします。ターゲットが過半数の要素であるかどうかを確認する必要があります。配列では、多数決要素は、長さNの配列でN / 2回以上出現する要素です。したがって、配列が-[2,4,5,5,5,5,5,6,6]のようである場合ターゲットが5の場合、出力はtrueです。

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

  • 2つの支援モジュール、lower()とupper()があります。これらは次のとおりです。
  • lower()は、配列arrとtargetの2つの引数、つまり-
  • を取ります。
  • 低:=0、高:=到着の長さ
  • 低<高-
    • 中:=低+(高-低)/ 2
    • arr [mid] =ターゲットの場合、high =mid、それ以外の場合、low =mid + 1
  • arr [high] =targetの場合はhighを返し、それ以外の場合は-1
  • upper()は、配列arrとtargetの2つの引数、つまり-
  • を取ります。
  • 低=0、高=到着の長さ
  • 低<高-
    • 中=低+(高-低)/ 2
    • arr [mid] =ターゲットの場合、low =mid、それ以外の場合、high =mid-1
  • arr [low] =targetの場合はlowを返し、それ以外の場合は-1
  • 主な機能は次のようになります-
  • u:=upper(arr、target)
  • l:=lower(arr、target)
  • u – l + 1>(numsの長さ)/ 2の場合はtrueを返し、uが-1でない場合はfalseを返します。それ以外の場合はfalse
例(Python)

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

class Solution(object):
   def upper(self,n,target):
      low = 0
      high = len(n)-1
      while low<high:
         mid = low + (high - low + 1)//2
         if n[mid] == target:
            low = mid
         else:
            high = mid-1
      return low if n[low] == target else -1
   def lower(self,n,target):
      low = 0
      high = len(n)-1
      while low < high:
         mid = low + (high - low)//2
         if n[mid]== target:
            high = mid
         else :
            low = mid +1
      return high if n[high] == target else -1
   def isMajorityElement(self, nums, target):
      u = self.upper(nums,target)
      l = self.lower(nums,target)
      return u-l+1 >len(nums)/2 if u != -1 else False
ob1 = Solution()
print(ob1.isMajorityElement([2,4,5,5,5,5,5,6,6], 5))

入力

[2,4,5,5,5,5,5,6,6]
5

出力

true

  1. 素数をチェックするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数が与えられているので、与えられた数が素数であるかどうかを確認する必要があります。 1より大きい特定の正の数で、1以外の要素はなく、その数自体は素数と呼ばれます。 2、3、5、7などは他の要素がないため素数です。 以下のこのプログラムでは、素数または非素数の性質について番号がチェックされます。 1以下の数は素数とは言えません。したがって、数値が1より大きい場合にのみ反復します。 ここで、その数が2から(num-1 // 2)の範囲の任意の数で正確に割り切れるかどうかを確認します。指定された範囲内に何ら

  2. アームストロング数をチェックするPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 整数nが与えられた場合、与えられた整数がアームストロング数であることを確認する必要があります。 正の整数は、次の場合、n次のアームストロング数と呼ばれます abcd... = a^n + b^n + c^n + d^n + … ここでは、3桁のアームストロング数、つまり3桁のブルートフォースアプローチについて説明します。 オーダーnのアームストロング番号を確認するには、3を行番号7の対応するオーダー値に置き換える必要があります。 それでは、実装を見てみましょう- 例