首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数组中删除唯一元素并按原始顺序打印元素的算法

从数组中删除唯一元素并按原始顺序打印元素的算法
EN

Stack Overflow用户
提问于 2016-01-21 22:16:44
回答 6查看 93关注 0票数 1

有一个问题困扰着我,不知何故,我想不出该怎么办。假设给出了一个数组{9,1,2,4,1,2,2}。数组中的唯一元素是94。输出数组应该是{1,2,1,2,2}。我保留顺序和查找重复项的想法是使用一个LinkedHashMap,它将包含条目和条目出现的计数。

问题是维持元素的顺序。一旦我把条目放在hashMap中,命令就会消失。

EN

Stack Overflow用户

发布于 2016-01-21 22:27:06

只需计数元素,并检查当前元素的总数是否大于1。

代码示例(C++11):

代码语言:javascript
运行
复制
#include <iostream>
#include <unordered_map>
#include <vector>

int main() {
  std::vector<int> to_split = {9, 1, 2, 4, 1, 2, 2};

  std::vector<int> unique, not_unique;
  std::unordered_map<int, int> counter;
  for (int elem : to_split) {
    ++counter[elem];
  }
  for (int elem : to_split) {
    if (counter[elem] > 1) {
      not_unique.push_back(elem);
    } else {
      unique.push_back(elem);
    }
  }

  std::cout << "Unique: " << std::endl;
  for (int elem : unique) {
    std::cout << elem << " ";
  }
  std::cout << std::endl;
  std::cout << "Not unique:" << std::endl;
  for (int elem : not_unique) {
    std::cout << elem << " ";
  }
  std::cout << std::endl;
  return 0;
}

输出:

代码语言:javascript
运行
复制
Unique:
9 4 
Not unique:
1 2 1 2 2 
票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34935410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档