C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でL番目に小さい数値とR番目に小さい数値の絶対差を返すクエリ


このチュートリアルでは、L番目に小さい数値とR番目に小さい数値の絶対差を返すクエリを見つけるプログラムについて説明します。

このために、整数とQクエリを含む配列が提供されます。私たちのタスクは、L番目に小さい値とR番目に小さい値のインデックス間の絶対差を見つけることです。

#include <bits/stdc++.h>
using namespace std;
//returning the result of a query
int respondingQuery(pair<int, int> arr[], int l, int r) {
   int result = abs(arr[l - 1].second - arr[r - 1].second);
   return result;
}
//implementing the queries
void calcDifference(int givenarr[], int a, int q[][2], int b){
   pair<int, int> arr[a];
   for (int i = 0; i < a; i++) {
      arr[i].first = givenarr[i];
      arr[i].second = i;
   }
   sort(arr, arr + a);
   for (int i = 0; i < b; i++)
      cout << respondingQuery(arr, q[i][0], q[i][1]) <<
   endl;
}
int main() {
   int arr[] = { 1, 7, 4, 2, 8};
   int arraySize = sizeof(arr) / sizeof(arr[0]);
   int query[][2] = { { 2, 7 }, { 4, 8 }, { 1, 2 }, { 8, 1 }};
   int querySize = sizeof(query) / sizeof(query[0]);
   calcDifference(arr, arraySize, query, querySize);
   return 0;
}

出力

3
32763
3
32764

  1. const int *、const int * const、およびint const *の違いは何ですか?

    ここでは、整数ポインター、整数定数、および整数定数ポインターに基づくいくつかの異なるタイプの変数宣言を確認します。 それらを決定するために、時計回り/スパイラルルールを使用します。用語を話し合うことで、ルールも理解できます。 const int * 。これは、これがポインター型変数であることをコンパイラーに通知するために使用され、定数intのアドレスを格納できます。時計のルールはこのように言っています- もう1つはconstint*constです。これは、これが1つの定数ポインター変数であり、別の定数整数のアドレスを格納できることを示すために使用されます。時計のルールを適用する

  2. Javaの配列の最大素数と最小素数の違い

    問題の説明 すべての要素が1000000未満である整数の特定の配列を使用します。配列内の最大の素数と最小の素数の差を見つけます。 例 Array: [ 1, 2, 3, 4, 5 ] Largest Prime Number = 5 Smallest Prime Number = 2 Difference = 5 - 3 = 2. 解決策 エラトステネスのふるいアプローチを使用します。これは、特定の数よりも小さいすべての素数を見つけるための効率的な方法です。次に、必要な差を得るために最大と最小の素数を計算します。 例 以下は、必要な出力を見つけるためのJavaのプログラムです。 pu