在数组中查找唯一数字

新手上路,请多包涵

好吧,我必须找出一个数组中有多少个不同的数字。

例如,如果数组是:1 9 4 5 8 3 1 3 5

输出应该是 6,因为 1,9,4,5,8,3 是唯一的,而 1,3,5 是重复的(不是唯一的)。

所以,这是我到目前为止的代码……没有正常工作的想法。

 #include <iostream>

using namespace std;

int main() {
    int r = 0, a[50], n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int j = 0; j < n; j++) {
        for (int k = 0; k < j; k++) {
            if (a[k] != a[j]) r++;
        }
    }
    cout << r << endl;
    return 0;
}

原文由 user2041143 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 604
1 个回答

请干运行您的代码在外部 for 循环中查看每个元素在内部循环中的计数不止一个。让我们说循环包含 1,2,3,4.1 ….. 元素在第二次迭代中干运行它并且第三次迭代 1 被计算在内,因为 1 是 1!=2 以及 1!=3

现在解决时间!

 #include<iostream>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
ll arr[1000007]={0};
int main()
{
  ios_base::sync_with_stdio(false);//used for fast i/o
    ll n;cin>>n;
      for(ll i=1;i<=n;i++)
        cin>>arr[i];

        sort(arr,arr+n);

       ll cnt=0;
                for(ll i=1;i<=n-1;i++)
                  {
                   if(arr[i+1]-arr[i]==0)
                     cnt++;
                  }
                 cout<<n-cnt<<endl;

  cin.tie(NULL);
  return 0;
}

原文由 Sourabh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题