LoginSignup
0
0

More than 1 year has passed since last update.

[100%] OddOccurrencesInArray (codility lessons)

Last updated at Posted at 2020-12-19

Painless

OddOccurrencesInArray

奇数の要素で発生する値を見つけます。

タスクの説明

N個の整数で構成される空でない配列Aが与えられます。配列には奇数の要素が含まれており、配列の各要素は、ペアになっていない1つの要素を除いて、同じ値を持つ別の要素とペアにすることができます。

たとえば、配列Aでは次のようになります。

  A [0] = 9 A [1] = 3 A [2] = 9
  A [3] = 3 A [4] = 9 A [5] = 7
  A [6] = 9
  • インデックス0と2の要素の値は9です。
  • インデックス1と3の要素の値は3です。
  • インデックス4と6の要素の値は9です。
  • インデックス5の要素の値は7であり、ペアになっていない。

関数を書く:

class Solution {public int solution(int [] A); }

上記の条件を満たすN個の整数で構成される配列Aが与えられると、対になっていない要素の値を返します。

たとえば、次のような配列Aが与えられます。

  A [0] = 9 A [1] = 3 A [2] = 9
  A [3] = 3 A [4] = 9 A [5] = 7
  A [6] = 9

上記の例で説明したように、関数は7を返す必要があります。

次の仮定のための効率的なアルゴリズムを記述します。

  • Nは[1..1,000,000]の範囲内の奇数の整数です。
  • 配列Aの各要素は、[1..1,000,000,000]の範囲内の整数です。
  • Aの値の1つを除くすべてが、偶数回発生します。

解く

image.png

Detected time complexity:
O(N) or O(N*log(N))

Program

OddOccurrencesInArray.java

OddOccurrencesInArray.java
    public int solution(int[] A) {
        int goal = 0;

        java.util.Arrays.sort(A);
        for (int i = 0; i < A.length -1; i++) {
            if (A[i] != A[i + 1]) {
                goal = A[i];
                break;
            }
            i++;
        }

        if (goal == 0) {
            goal =  A[A.length - 1];
        }

        return goal;
    }

jUnit

OddOccurrencesInArrayTest.java

Report

Candidate Report: training66EE8T-EUB


See also: CodilityのLessonsをすべて解く(更新中)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0