Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

अनसॉर्टेड सरणी में किसी तत्व का प्रारंभिक और अंतिम इंडेक्स ढूंढें C++ में


इस समस्या में, हमें n पूर्णांक मानों की एक सरणी aar[] दी गई है जो सॉर्टेड नहीं है और एक पूर्णांक val। हमारा कार्य अनसॉर्टेड सरणी में किसी तत्व का प्रारंभिक और अंतिम इंडेक्स ढूंढना है।

सरणी में तत्व की घटना के लिए, हम लौटाएंगे,

"प्रारंभिक इंडेक्स और अंतिम इंडेक्स" यदि यह सरणी में दो बार या अधिक पाया जाता है।

"एकल इंडेक्स" यदि यह सरणी में एक बार पाया जाता है।

"तत्व मौजूद नहीं" यदि यह सरणी में मौजूद नहीं है।

उदाहरण से समझते हैं:

उदाहरण 1

इनपुट: arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2 आउटपुट: प्रारंभिक इंडेक्स = 0, अंतिम इंडेक्स = 5

व्याख्या:

तत्व 2 की दो घटनाएं हैं,
पहली इंडेक्स = 0 पर,
दूसरी इंडेक्स = 5 पर

उदाहरण 2

इनपुट: arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5 आउटपुट: केवल इंडेक्स 2 पर एक बार मौजूद है

व्याख्या:

तत्व 5 की केवल एक घटना है, इंडेक्स = 2 पर,

उदाहरण 3

इनपुट: arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7 आउटपुट: सरणी में मौजूद नहीं!

समाधान दृष्टिकोण

समस्या का एक सरल समाधान सरणी को ट्रैवर्स करना है।

हम सरणी को ट्रैवर्स करेंगे और दो इंडेक्स मान रखेंगे, पहला और अंतिम। पहला इंडेक्स सरणी को शुरुआत से ट्रैवर्स करेगा और अंतिम इंडेक्स सरणी को अंत से ट्रैवर्स करेगा। और फिर लूप को समाप्त कर देंगे जब पहले और अंतिम इंडेक्स पर तत्व का मान समान हो जाए।

एल्गोरिथम

  • चरण 1 - सरणी के माध्यम से लूप करें

    • चरण 1.1 - शुरुआत से ट्रैवर्स करने के लिए पहले इंडेक्स और अंत से ट्रैवर्स करने के लिए अंतिम इंडेक्स का उपयोग करें।

    • चरण 1.2 - यदि किसी इंडेक्स पर मान val के बराबर है। इंडेक्स मान को न बढ़ाएं।

    • चरण 1.3 - यदि दोनों इंडेक्स पर मान समान हैं तो लौटाएं।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम:

#include <iostream> using namespace std; void findStartAndEndIndex(int arr[], int n, int val) {    int start = 0;    int end = n -1 ;    while(1){    if(arr[start] != val)       start++;    if(arr[end] != val)       end--;    if(arr[start] == arr[end] && arr[start] == val)       break;    if(start == end)       break; }    if (start == end ){       if(arr[start] == val)          cout<<"Element is present only once at index : "<<start;       else          cout<<"Element Not Present in the array";    } else {       cout<<"Element present twice at \n";       cout<<"Start index: "<<start<<endl; cout<<"Last index: "<<end; } } int main() { int arr[] = { 2, 1, 5, 4, 6, 2, 9, 0, 2, 3, 5 }; int n = sizeof(arr) / sizeof(arr[0]); int val = 2; findStartAndEndIndex(arr, n, val); return 0; }

आउटपुट

Element present twice at Start index: 0 Last index: 8

  1. - C++ में सरणी के प्रत्येक तत्व का सरपासर काउंट खोजें

    मान लीजिए एक सरणी A दी गई है। हमें उस सरणी में प्रत्येक तत्व के सरपासर की संख्या ज्ञात करनी है। सरपासर वे बड़े तत्व हैं जो वर्तमान तत्व के दाईं ओर सरणी में मौजूद हैं। मान लीजिए A = {2, 7, 5, 3, 0, 8, 1}, सरपासर हैं {4, 1, 1, 1, 2, 0, 0}, इसलिए 2 के दाईं ओर 4 संख्याएं हैं जो 2 से बड़ी हैं, और इसी नि

  1. - C++ प्रोग्राम: दो अनसॉर्टेड एरे का यूनियन और इंटरसेक्शन ज्ञात करना

    इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो दो दिए गए अनसॉर्टेड एरे का यूनियन और इंटरसेक्शन ज्ञात करता है। आइए दो एरे को A और B से दर्शाएं। फिर उन एरे का यूनियन A ∪ B द्वारा दर्शाया जाता है जो मूल रूप से दोनों दिए गए एरे में सभी तत्वों का एक एरे है; बशर्ते कि प्रत्येक तत्व केवल एक बार दोहराए। इस

  1. - C++ में सरणी का सबसे बड़ा एलिमेंट खोजने का प्रोग्राम

    एक सरणी में कई एलिमेंट्स होते हैं और सरणी में सबसे बड़ा एलिमेंट वह होता है जो अन्य एलिमेंट्स से बड़ा होता है। उदाहरण के लिए। 5 1 7 2 4 उपरोक्त सरणी में, 7 सबसे बड़ा एलिमेंट है और यह इंडेक्स 2 पर है। सरणी का सबसे बड़ा एलिमेंट खोजने का एक प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream>