統計給定值在C++中所在的區間數
給定一個包含區間的二維陣列 arr[][] 和一個數字“value”。目標是找到 arr 中存在多少個區間,value 位於這些區間之間。例如,區間為 [[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 or 1] ] 中遞增。最後,我們將使用 arr_2[i]=arr_2[i]+arr_2[i−1] 更新頻率陣列,因為小於 i-1 的數字也小於 i,因此頻率將被累加。透過這種方式,我們將獲得 arr_2[value] 作為 value 所在的所有範圍。
取一個包含範圍的整數陣列 arr[][]。
取一個整數 value 作為輸入。
函式 intervals_values(int arr[][2], int size, int value) 獲取 arr 和 value 並返回給定值所在的區間數。
取頻率陣列 arr_2[]。
取 low 和 highest 為 INT_MAX 和 INT_MIN。
使用 for 迴圈從 i=0 到 i<size 遍歷 arr[][]。
取 temp 為範圍的左端點,並在 arr_2[temp] 中遞增其頻率。
取 temp_2 為範圍的右端點,並在 arr_2[temp_2+1] 中遞增其頻率。
如果 temp<low,則設定 low=temp;如果 temp_2>highest,則設定 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
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP