计算给定值在C ++中所处的时间间隔数

给定2D数组arr [] [],其中包含间隔和数字“值”。目的是找到存在于其间的arr中的间隔数。例如,间隔为[[1,5],[3,7]]且value = 4,则它位于这两个间隔中,计数为2。

例如

输入值

arr[4][2] = { { 1, 20 }, { 12, 25 }, { 32, 40 }, { 15, 18 } } value=16
输出结果
Count of number of intervals in which a given value lies are: 3

说明

The value 16 lies between 1−20, 12−25 and 15−18

输入值

arr[4][2] = {{ 1, 20 }, { 20,30 }, { 30, 40 }, { 40, 50 }} value=60
输出结果
Count of number of intervals in which a given value lies are: 0

说明

The value 60 is larger than all maximum ranges of intervals present in
arr[][].

以下程序中使用的方法如下-

在这种方法中,我们将为arr中存在的所有范围数生成一个频率数组arr_2 []。因此,对于每个范围的arr [i] [0]和arr [i] [1],频率将以arr_2 [arr [i] [0或1]]递增。最后,我们将使用arr_2 [i] = arr_2 [i] + arr_2 [i-1]更新频率阵列,因为小于i-1的数字也将小于i,因此将添加频率。这样,我们将获得arr_2 [value]作为值所在的所有范围。

  • 取一个包含范围的整数数组arr [] []。

  • 以整数值作为输入。

  • 函数interval_values(int arr [] [2],int大小,int值)取arr和value并返回给定值所在的间隔数的计数。

  • 取频率数组arr_2 []。

  • 将最低和最高设为INT_MAX和INT_MIN。

  • 使用for循环从i = 0到i <size遍历arr [] []。

  • 将温度设为范围的左侧,并在arr_2 [temp]中增加其频率

  • 将temp_2作为范围的右边,并在arr_2 [temp_2 + 1]中增加其频率

  • 如果temp <low设置为low = temp,而temp_2> highest则设置为temp_2。

  • 遍历频率阵列并将其更新为arr_2 [i] = arr_2 [i] + arr_2 [i + 1]。

  • 最后返回arr_2 [value]作为结果。

示例

#include<bits/stdc++.h>
using namespace std;
#define max 1000
int intervals_values(int arr[][2], int size, int value){
   int arr_2[max];
   int low = INT_MAX;
   int highest = INT_MIN;
   for(int i = 0; i < size; i++){
      int temp = arr[i][0];
      arr_2[temp] = arr_2[temp] + 1;
      int temp_2 = arr[i][1];
      arr_2[temp_2 + 1] = arr_2[temp_2 + 1] − 1;
      if(temp < low){
         low = temp;
      }
      if(temp_2 > highest){
         highest = temp_2;
      }
   }
   for (int i = low; i <= highest; i++){
      arr_2[i] = arr_2[i] + arr_2[i − 1];
   }
   return arr_2[value];
}
int main(){
   int arr[4][2] = { { 3, 20 }, { 2, 13 }, { 25, 30 }, { 15, 40 } };
   int size = sizeof(arr) / sizeof(arr[0]);
   int value = 28;
   cout<<"Count the number of intervals in which a given value lies are:
   "<<intervals_values(arr, size, value);
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出-

Count the number of intervals in which a given value lies are: 18830628

猜你喜欢