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

सी ++ में एक क्रमबद्ध सरणी में किसी तत्व की शुरुआत और समाप्ति अनुक्रमणिका खोजें

इस समस्या में, हमें n पूर्णांक मानों की एक सरणी aar[] दी गई है जो क्रमबद्ध नहीं हैं और एक पूर्णांक वैल है। हमारा काम है बिना क्रमबद्ध सरणी में किसी तत्व की शुरुआत और समाप्ति अनुक्रमणिका ढूंढना

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

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

"एकल अनुक्रमणिका " अगर यह एक बार सरणी में पाया जाता है।

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

समस्या को समझने के लिए एक उदाहरण लेते हैं,

उदाहरण 1

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2
Output : starting index = 0, ending index = 5

स्पष्टीकरण

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

उदाहरण 2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5
Output : Present only once at index 2

स्पष्टीकरण

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

उदाहरण 3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7
Output : Not present in the array!

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

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

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

एल्गोरिदम

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

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

    • चरण 1.2 - यदि किसी सूचकांक का मान वैल के बराबर है। अनुक्रमणिका मान में वृद्धि न करें।

    • चरण 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. सी ++ में सरणी में प्रत्येक तत्व की सर्पासर गणना खोजें

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

  1. C++ प्रोग्राम दो अवर्गीकृत सरणियों के मिलन और प्रतिच्छेदन को खोजने के लिए

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

  1. सी ++ प्रोग्राम एक ऐरे का सबसे बड़ा तत्व खोजने के लिए

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