1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【codility】Lesson 2:Arrays OddOccurrencesInArray

Posted at

#subject
Lesson 2:Arrays OddOccurrencesInArray
N個(奇数)の要素を持つ配列の中に、ペアのいない要素があり、その要素を返す問題。
例)
A = {9, 3, 9, 3, 9, 7, 9}の場合は7を返す。
#submit
score100にたどり着くまでに、計算速度の課題にぶち当たった。メモリをクリアできないとscore77止まり。
スクリーンショット 2018-06-03 20.56.27.png
#program
結局メモリの課題はクリアできず、過去に解いた方のものを理解した。参考
このXORに自分ではたどり着けなかった。こんなに短くてシンプルなプログラムがかけると気持ち良いだろうな。とても学びになった。

oddOccurrencesInArray.cpp
#include<iostream>
#include<vector>
using namespace std;

int solution(vector<int> &inputArray, int N) {

    int oddOccurrences = 0;
    for (int i : inputArray) {
        oddOccurrences ^= i;
    }
    return oddOccurrences;
}

演算速度には引っかかってしまったが、自分で考えたプログラムはこんな感じである。

oddOccurrencesInArray_NG.cpp
#include<iostream>
#include<vector>
#include<map>
using namespace std;

int solution(vector<int> &inputArray, int N) {

	map<int, int> number;

	//count occurrences
	for (int i : inputArray) {
		auto itr = number.find(i);  // find key i
		if (itr != number.end())    //if there are the key i
            number.erase(i);
		else
		    number.insert(make_pair(i, 1));
	}

	//find the unpare element
	for (auto x : number) {
			return x.first;
	}
	return 0;
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?