配列内の整数は、1 つの整数を除いて完全に奇数であるか、完全に偶数です。
概要
整数を含む配列 (長さは少なくとも 3 ですが、非常に大きくなる可能性があります) が与えられます。配列は、全体が奇数の整数で構成されているか、単一の整数 N を除いて全体が偶数の整数で構成されています。配列を引数として受け取り、この外れ値 N を返すメソッドを作成します。
これはこれまでの私のコードですが、機能していないようです。
arr = [160, 3, 1719, 19, 11, 13, -21]
n = arr.length
def getOddOccurrence(arr, arr_size)
for i in range(0, arr_size)
count = 0
for j in range(0, arr_size)
if arr[i] == arr[j]
count += 1
end
if(count % 2 != 0)
return arr[i]
end
end
end
return -1
end
print getOddOccurrence(arr, n)
このコードにはどのような変更が必要ですか?
解決策
これを行う簡単な方法は次のとおりです
arr = [160, 3, 1719, 19, 11, 13, -21]
arr.group_by(&:odd?).values.sort_by(&:count)[0][0]
# => 160
group_by(&:odd?) は奇数と偶数の 2 つのハッシュを作成します
値 ハッシュの値を取得します。偶数と奇数の 2 つの配列
sort_by(&:count) 配列を並べ替えます。値が少ないものが最初になります。
[0][0] 最初の配列の最初の番号を取得します