अंतराल और एक संख्या 'मान' युक्त एक 2D सरणी गिरफ्तारी [] [] को देखते हुए। लक्ष्य एआर में मौजूद अंतराल की संख्या का पता लगाना है जिसके बीच मूल्य निहित है। उदाहरण के लिए अंतराल हैं [ [1,5], [3,7] ] और मान =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_2[] उत्पन्न करेंगे। तो प्रत्येक श्रेणी की गिरफ्तारी [i] [0] और गिरफ्तारी [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[][] जिसमें श्रेणियां हों।
-
इनपुट के रूप में एक पूर्णांक मान लें।
-
फ़ंक्शन अंतराल_वैल्यू (इंट एआर [] [2], इंट साइज, इंट वैल्यू) एआर और वैल्यू लेता है और अंतराल की संख्या की गिनती देता है जिसमें एक दिया गया मान निहित है।
-
आवृत्ति सरणी arr_2[] लें।
-
निम्न और उच्चतम को INT_MAX और INT_MIN के रूप में लें।
-
ट्रैवर्स एआर [] [] लूप के लिए i=0 से i<आकार तक का उपयोग कर रहा है।
-
अस्थायी को सीमा के बाईं ओर लें और इसकी आवृत्ति को arr_2[temp]
. में बढ़ाएं -
सीमा के अधिकार के रूप में temp_2 लें और इसकी आवृत्ति को arr_2[temp_2+1]
. में बढ़ाएं -
यदि अस्थायी <निम्न सेट निम्न =अस्थायी और यदि temp_2>उच्चतम सेट 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