Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm phần tử xuất hiện b lần trong mảng bằng C++

Mô tả bài toán

Cho mảng, mọi giá trị xuất hiện a lần trừ một giá trị xuất hiện b lần. Tìm giá trị đó.

Ví dụ

arr={3,3,3,3,5,5,5,1,1,1,1}, a=4, b=3 → Output: 5.

Giải thuật (Toán học O(N))

Gọi Sunique = tổng các giá trị duy nhất. Tổng mảng = a×Sunique - (a-b)×x, với x là giá trị xuất hiện b lần. Suy ra x = (a×Sunique - Sarr) / (a-b).

Mã nguồn C++

#include <bits/stdc++.h>
using namespace std;

int findbFreqVal(int arr[], int n, int a, int b) {
    unordered_set<int> uniq;
    long long uniqSum=0, arrSum=0;
    for (int i=0; i

Đầu ra

The value of the array that appears b times is 31