C++ 中字尾中不同整數的數量查詢
在這個問題中,我們給定一個包含 N 個整數的陣列。有 Q 個查詢,每個查詢包含一個整數值 m。我們的任務是建立一個程式來解決 C++ 中字尾中不同整數的數量查詢。
問題描述 - 在這裡,我們需要找到從索引 (m-1) 到 (N-1) 的子陣列中存在的不同整數的總數。其中 m 是每個查詢中的值。
讓我們舉個例子來理解這個問題 -
輸入
array = {2, 6, 1, 2, 7, 6}
Q = 2 , queries = {1, 5}輸出
4 2
解釋
對於 m = 1,我們需要找到從索引 0 到 N 的不同元素的數量,即 4。
對於 m = 5,我們需要找到從索引 4 到 N 的不同元素的數量,即 2。
解決方案方法
這個問題的解決方案很簡單,如示例所示。我們需要簡單地計算陣列中唯一或不同的元素的數量。如果我們將資料結構視為陣列,則似乎很困難。但是,如果我們考慮使用其他資料結構,則解決方案將很容易。
因此,為了解決問題,我們將使用 C++ 中的集合,它在 STL 庫中可用。因此,對於每個查詢,我們將在集合中插入從索引 (m-1) 到 (n-1) 的元素。集合的長度給出查詢的不同元素的數量。
程式說明我們的解決方案,
示例
#include <bits/stdc++.h>
using namespace std;
int findDistinctInt(int arr[], int N, int m) {
set<int> distValues;
for (int i = (N-1); i >= (m-1); i--) {
distValues.insert(arr[i]);
}
return distValues.size();
}
int main() {
int arr[] = { 2, 6, 1, 2, 7, 6 };
int N = sizeof(arr) / sizeof(arr[0]);
int Q = 2;
int query[Q] = { 1, 5 };
for(int i = 0; i < Q; i++)
cout<<"For query "<<(i+1)<<": The number of distinct integer in Suffix is "<<findDistinctInt(arr, N, query[i])<<endl;
return 0;
}輸出
For Query 1: The number of distinct integer in Suffix is 4 For Query 2: The number of distinct integer in Suffix is 2
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP