#subject
配列の中で、出現していない一番小さな値(0以上の値)を返す問題
例)
A = [1, 3, 6, 4, 1, 2]
の場合 5
を返す。
A = [1, 2, 3]
の場合 4
を返す。
A = [-1, -2]
の場合 1
を返す。
#program
Point:Setを使って重複を排除しながらソート
受け取る配列は、「①ソートされていない」「②重複がある」「③ゼロ以下の数値が紛れている」という特性を持っている。vectorの配列をset配列に入れる処理の中で、①ソートしながら、②重複を防ぎながら、③ゼロ以下の数値を省いた配列をつくり、簡単な処理になるようにした。
MissingInteger.cpp
#include<iostream>
#include<vector>
#include <set>
using namespace std;
int solution(vector<int> &inputArray) {
set<int> checkArray;
if (!inputArray.empty()) {
//sort the inputArray
for (auto i : inputArray) {
if(i > 0)
checkArray.insert(i);
}
// if inputArray's elements value less than Zero
if (checkArray.empty()) {
return 1;
}
else{
int count = 1;
for (auto i : checkArray) {
if (!(i == count))
return count;
count++;
}
}
return (checkArray.size()+1);
}
return 1;
}