0 / 0 / 0
Регистрация: 16.10.2020
Сообщений: 117
1

Удалить повторяющиеся элементы

16.01.2021, 15:36. Показов 244. Ответов 1
Метки нет (Все метки)

Мой код -


Delete occurrences of an element if it occurs more than n times

Удалить повторяющиеся элементы, если они повторяется больше чем н раз.

у меня есть 20, 37, 20, 21, и н равняется = 1, все вышло, удалил 20.

Но мой код не может так-же сделать с большим кол-во чисел, что мне нужно подправить?




C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
std::vector<int> deleteNth(std::vector<int> arr, int n)
{
  
  
  int count = 0;
    for (int i = 0; i < arr.size(); ++i) {
        for (int j = i; j <arr.size() ; ++j) {
            if(arr[j] == arr[i-1]){
                count++;
                if(count >= n ){
                    arr.erase(arr.begin() + j);
                }
 
        }
 
            }
count = 0;
        }
 
 
  
  
  
  return {arr};
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2021, 15:36
Ответы с готовыми решениями:

Удалить повторяющиеся элементы
Мне нужно удалить все повторяющиеся элементы, то есть при вводе 1 2 3 3 4 5 , он должен вывести 1 2...

Удалить из массива повторяющиеся элементы
Удалить из массива повторяющиеся элементы.жду вашим решений

Удалить повторяющиеся элементы списка
Есть список в виде класса. Нужно удалить повторяющиеся элементы, вернее, чтобы каждого было по...

Удалить повторяющиеся элементы вектора
Как удалить элемент? найти - нашёл (вроде как), а вот удалить... vector &lt;myString&gt; ve(10);...

1
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,745
16.01.2021, 18:18 2
relanix, Попробуй так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <unordered_set>
#include <algorithm>
 
auto delete_repetitions(std::vector<int> v, int n = 1)
{
    std::unordered_set<int> rep;
    auto current = v.begin();
    while (current != v.end())
    {
        if (std::count(current, v.end(), *current) > n) rep.insert(*current);
        ++current;
    }
    v.erase(std::remove_if(v.begin(), v.end(), [&rep](auto e) { return rep.contains(e); }), v.end());
    return v;
}
 
int main()
{
    std::vector<int> v{15, 3, 8, 3, 9, 10, 3, 9, 7, 15, 10, 1, 6, 9};
    for (auto e : v) std::cout << e << " ";
    std::cout << std::endl;
    auto result = delete_repetitions(v, 2);
    for (auto e : result) std::cout << e << " ";
    std::cout << std::endl;
    result = delete_repetitions(v);
    for (auto e : result) std::cout << e << " ";
    std::cout << std::endl;
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2021, 18:18
Помогаю со студенческими работами здесь

Удалить из массива vector повторяющиеся элементы
Объяснение готового кода(логика решения, алгоритм,какие средства языка программирования...

Из массива удалить все повторяющиеся элементы
Из заданного целочисленного массива удалить все повторяющиеся элементы, оставив только их первые...

Удалить все повторяющиеся элементы массива
Удалить все повторяющиеся элементы массива. Как сделать, чтобы элементы удалялись, а не...

Удалить все повторяющиеся элементы в векторе
доброго времени суток. Столкнулся с проблемой удаления лишних повторов чисел в векторе. Задача...

Удалить повторяющиеся элементы в отсортированнном массиве
пример такого массива I={0,1,3,3,3,5,6,8,10,10} Т.е. я так понимаю, нужно сдигать все элементы при...

Удалить повторяющиеся элементы из двух векторов
Доброго времени суток! Есть два вектора, нужно найти повторяющиеся элементы и удалить их из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru