Предмет: Информатика,
автор: londondisa615
Дан размер массива и сам массив (вводится с клавиатуры)
Если в массиве одно и тоже число встречается несколько раз подряд, то первое его появление оставить, остальные заменить на 0
пример:
8 9 9 9 5 9 3 3 1
Станет
8 9 0 0 5 9 3 0 1
нужно на с++ код
Ответы
Автор ответа:
0
#include < iostream >
#include < vector >
using namespace std;
int main(){
int n;
cin >> n;
vector<int> a(n);
for(auto &i: a) cin >> i;
int j = 0;
while(j < n){
int l = j, r = n - 1, x = j;
while(l <= r){
int m = (l + r) / 2;
if(a[m] == a[j]){
x = m;
l = m + 1;
}
else{
r = m - 1;
}
}
while(++j <= x)
a[j] = 0;
}
for(auto &i: a) cout << i << " ";
}
Решение за O(nlogn) я привел. Но можно сделать круче: за O(n) - о том как, подумай на досуге сам. Как домашка тебе
Похожие вопросы
Предмет: Русский язык,
автор: ПетроваYana
Предмет: Русский язык,
автор: chursindmitriy
Предмет: Английский язык,
автор: mandarinka771
Предмет: Математика,
автор: dariyaradzhan
Предмет: Математика,
автор: dariyaradzhan