IZ
Size: a a a
IZ
Ps
template<class InputIt, class T>
typename iterator_traits<InputIt>::difference_type
count(InputIt first, InputIt last, const T& value)
{
typename iterator_traits<InputIt>::difference_type ret = 0;
for (; first != last; ++first) {
if (*first == value) {
ret++;
}
}
return ret;
}
а можно как нибудь заставить проходить массив только если 'ret' не превышает некоторого значения?DP
if(ret++ >= 42) { return ret; }
?С
Ps
Ps
С
Ps
DP
С
Ps
С
Ps
Ps
Ps
Given an array a that contains only numbers in the range from 1 to a.length, find the first duplicate number for which the second occurrence has the minimal index. In other words, if there are more than 1 duplicated numbers, return the number for which the second occurrence has a smaller index than the second occurrence of the other number does. If there are no such elements, return -1.
Example
For a = [2, 1, 3, 5, 3, 2], the output should be firstDuplicate(a) = 3.
There are 2 duplicates: numbers 2 and 3. The second occurrence of 3 has a smaller index than the second occurrence of 2 does, so the answer is 3.
For a = [2, 2], the output should be firstDuplicate(a) = 2;
For a = [2, 4, 3, 5, 1], the output should be firstDuplicate(a) = -1.
Оригинал задачи вотС
DP
DP
constexpr char kSym{'a'};
int n{};
std::find_if(std::cbegin(v), std::cend(v), [kSym, &n](char c) {
if(kSym == c) {
++n;
}
if(n >= 3) {
return true;
}
return false;
});
Ps
int firstDuplicate(std::vector<int> a) {
std::vector<int> res;
res.reserve(a.size());
for (auto x : a) {
if (std::count_if(res.begin(), res.end(), 0) < 1)
res.push_back(x);
else return x;
}
return -1;
}
вот такое решение выдаёт ошибку прохода теста, по превышении лимита времениС