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

更新於: 2020年9月9日

79 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.