オファー(28)受賞:その他の配列番号の数の半数以上が表示されます
検索マイクロチャネル公共番号:「AI-ming3526」以上のアルゴリズム、機械学習のための「この小さなコンピュータビジョン」、ドライ
CSDN:https://blog.csdn.net/baidu_31657889/
GitHubの:https://github.com/あいみ-CN / AILearners
まず、プライマー
このシリーズは、独自のアルゴリズムの下で能力を強化することを目指して、オンラインの質問ノートの牛をはねのける「安全オファーを証明するために、」私のブラシです。
:解決オファーCSDNとgithubのリンクをクリックして、安全性の問題を証明するために、完全なアルゴリズムを見る
安全オファーを証明する完全な分析演習CSDNアドレス
githubのアドレス
第二に、タイトル
この番号を見つけ、配列の半分以上の長さを表示される配列番号の数があります。例えば、入力アレイ9の長さは{1,2,3,2,2,2,5,4,2}。数2は5回、アレイ内のアレイの半分以上の長さ、出力2が表示されているので。0出力がある場合。
1、アイデア
1つのアイデア:配列の途中で数を見つけるために、配列をソートします。数は、アレイの半分以上の長さを出現回数が、その後、注文後、この数は最高の間確かであれば、出現数を表示するには、いくつかの方法は、アレイの半分より大きい長さ数、それはこの数を返し、そうでなければ0。
アイデア2:数が数を認定していて、それは他の数字が表示されるすべての数よりもさらに表示された場合。
2つの値の配列を横断するとき保存:1は数値配列、1つの数です。次の番号を横断するとき、場合には、以前と同じ図、プラス数1に記憶されているか、1だけデクリメントされ、番号が0の場合、次の番号が保存され、その数は1に設定されています。保存された数字を通過した後も望まれています。そして、それは条件をすることができ満たしているかどうかを判断します。
これは実際には「フラクタル葉」方式で、アレイは、同時に2つの異なる数値、数ある数の最後の残りを取り除きます。、その後、2つが同じで、残りの2の場合、結果は元の配列、配列トラバーサル最終判決のための出現の番号について再び統計への最後の残りの桁または2に基づいて、あります。
2、プログラミング
パイソン
コードの実装:
1つのアイデア:
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
numbers.sort()
theone = numbers[len(numbers)/2]
if numbers.count(theone) > len(numbers)/2:
return theone
return 0
2つのアイデア:
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
if not numbers:
return 0
res = numbers[0]
times = 1
length = len(numbers)
for i in range(1, length):
if times == 0:
res = numbers[i]
times = 1
elif res == numbers[i]:
times += 1
else:
times -= 1
import collections
return res if collections.Counter(numbers)[res] * 2 > length else 0
AIの詳細については、AIMI-CN AI学習交換基[1015286623]
技術、生活の中で楽しく共有:公共の私達の数コンピュータビジョンこの小さな週プッシュ「AI」シリーズのニュース記事を、あなたの関心を歓迎します!