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

C++ में सरणी में संभावित चालों के बाद बाएं पॉइंटर का इंडेक्स ज्ञात करें


इस समस्या में, हमें आकार N की एक सरणी arr[] दी गई है। हमारा कार्य सरणी में संभावित चालों के बाद बाएं पॉइंटर का इंडेक्स ज्ञात करना है।

सरणी के लिए हमारे पास दो पॉइंटर्स हैं, एक बायां पॉइंटर और दूसरा दायां पॉइंटर।

बायां पॉइंटर इंडेक्स 0 से शुरू होता है और मान बढ़ाया जाता है।

दायां पॉइंटर इंडेक्स (n-1) से शुरू होता है और मान घटाया जाता है।

एक पॉइंटर का मान बढ़ता है यदि पार किया गया योग दूसरे से कम है, यानी यदि बाएं पॉइंटर का योग दाएं पॉइंटर के योग से कम है, तो बायां पॉइंटर बढ़ाया जाता है अन्यथा दायां पॉइंटर घटाया जाता है। और योग अपडेट किए जाते हैं।

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

इनपुट : arr[] = {5, 6, 3, 7, 9, 4} आउटपुट : 2

व्याख्या −

leftPointer = 0 -> योग = 5, rightPointer = 5 -> योग = 4. rightPointer बढ़ाएं leftPointer = 0 -> योग = 5, rightPointer = 4 -> योग = 13. leftPointer बढ़ाएं leftPointer = 1 -> योग = 11, rightPointer = 4 -> योग = 13. leftPointer बढ़ाएं leftPointer = 2 -> योग = 14, rightPointer = 4 -> योग = 13. rightPointer बढ़ाएं leftPointer = 2 -> योग = 14, rightPointer = 3 -> योग = 20. rightPointer बढ़ाएं बाएं पॉइंटर की स्थिति 2 है।

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

समस्या का एक सरल समाधान योग के आधार पर leftPointer और rightPointer को बढ़ाना है। और फिर जांचें कि क्या leftPointer, rightPointer से एक अधिक है।

उदाहरण

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

#include <iostream> using namespace std; int findIndexLeftPointer(int arr[], int n) {    if(n == 1)       return 0;    int leftPointer = 0,rightPointer = n-1,leftPointerSum = arr[0], rightPointerSum = arr[n-1]; while (rightPointer > leftPointer + 1) { if (leftPointerSum < rightPointerSum) { leftPointer++; leftPointerSum += arr[leftPointer]; } else if (leftPointerSum > rightPointerSum) { rightPointer--; rightPointerSum += arr[rightPointer]; } else { break; } } return leftPointer; } int main() { int arr[] = { 5, 6, 3, 7, 9, 4 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"चाल के बाद बाएं पॉइंटर का इंडेक्स है "<<findIndexLeftPointer(arr, n); return 0; }

आउटपुट

चाल के बाद बाएं पॉइंटर का इंडेक्स है 2 

  1. C++ में दिए गए बाइनरी ट्री के बाएं लीफ नोड्स का योग ढूंढें C++ में दिए गए बाइनरी ट्री के बाएं लीफ नोड्स का योग ढूंढें

    मान लीजिए हमारे पास एक बाइनरी ट्री है जिसमें एक रूट नोड और उसका बायां बच्चा और दायां बच्चा है। कार्य ट्री के उन लीफ नोड्स का कुल योग ढूंढना है जो अपने पैरेंट नोड के बाईं ओर हैं। उदाहरण के लिए इनपुट-1:        आउटपुट: 15 व्याख्या: दिए गए इनपुट बाइनरी ट्री में, सभी बाएं लीफ नोड

  1. - C++ प्रोग्राम: सरणी में फैक्टरियल का योग ज्ञात करना

    मान लें हमारे पास एक सरणी A है, जो क्रमबद्ध है। इसमें सभी तत्व दो बार आते हैं, लेकिन एक तत्व केवल एक बार मौजूद है। हमें उस तत्व को ज्ञात करना है। यदि सरणी [1, 1, 3, 3, 4, 4, 5, 6, 6, 7, 7, 9, 9] है, तो एकल तत्व 5 है। हम इस समस्या को हल करने के लिए बाइनरी सर्च दृष्टिकोण का उपयोग करेंगे। एकल तत्व से

  1. - C++ में पॉइंटर अंकगणित का उपयोग करके ऐरे का योग

    यह पॉइंटर का उपयोग करके ऐरे तत्वों का योग ज्ञात करने के लिए एक C++ प्रोग्राम है। एल्गोरिदम Begin उपयोगकर्ता इनपुट से मानों के साथ ऐरे तत्वों को इनिशियलाइज़ करें। s = 0 इनिशियलाइज़ करें i = 0 से लूप s = s + *(ptr + i) चर s में योग मान प्रिंट करें। End उदाहरण कोड #include &l