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

C++ में लगातार तत्वों में 1 का अंतर वाले सबएरे की गिनती


हमें एक सरणी arr[] दी गई है जिसमें पूर्णांक हैं। लक्ष्य arr[] के उन सभी सबएरे की गिनती करना है जिनमें प्रत्येक सबएरे में लगातार तत्व केवल 1 से भिन्न हों। यदि सरणी [1,2,3] है। सबएरे होंगे केवल [1,2], [2,3], [1,2,3]।

उदाहरण सहित समझ

इनपुट - arr[] = { 4,3,2,1 };

आउटपुट - लगातार तत्वों में 1 का अंतर वाले सबएरे की संख्या: 6

व्याख्या - सबएरे होंगे:

[4,3], [3,2], [2,1], [4,3,2], [3,2,1], [4,3,2,1]. कुल 6।

इनपुट - arr[] = { 1,5,6,7,9,11 };

आउटपुट - लगातार तत्वों में 1 का अंतर वाले सबएरे की संख्या: 3

व्याख्या - सबएरे होंगे:

[5,6], [6,7], [5,6,7]. कुल 3

प्रोग्राम में उपयोग किया गया दृष्टिकोण

हम फॉर लूप का उपयोग करके सरणी को ट्रैवर्स करेंगे। i=0 से i<size तक। फिर जांचें कि क्या कोई तत्व अपने आसन्न तत्व से 1 से भिन्न है। यदि हां तो इंडेक्स को first के रूप में संग्रहीत करें। यदि नहीं तो सबएरे में तत्वों की संख्या को temp के रूप में लें (first-last +1)। इंडेक्स first और last के बीच की सरणियों में सभी लगातार तत्व 1 से भिन्न होते हैं। तो कुल सबएरे होंगे temp*(temp-1)/2। इसे काउंट में जोड़ें। अगली सरणी के लिए इंडेक्स first=last=i अपडेट करें जिसमें सभी लगातार तत्व हों।

  • संख्याओं की एक सरणी arr[] लें।
  • फंक्शन sub_ele_diff_one(int arr[], int size) सरणी लेता है और लगातार तत्वों में 1 का अंतर वाले सबएरे की गिनती लौटाता है।
  • प्रारंभिक काउंट 0 लें।
  • फॉर लूप का उपयोग करके i=0 से i<size तक सरणी को ट्रैवर्स करें।
  • दो चर first, last को 0 लें उन इंडेक्स के लिए जिन तक सभी तत्व लगातार हैं और 1 से भिन्न हैं।
  • जांचें यदि arr[i-1]-arr[i] == 1 या arr[i]-arr[i-1] == 1। (तत्व 1 से भिन्न हैं)। यदि सही, तो first बढ़ाएँ।
  • यदि पिछली शर्त गलत है, तो इस शर्त को पूरा करने वाली सरणी में कुल तत्व temp = first - last + 1 हैं। संभावित सबएरे total = temp * (temp - 1) / 2 हैं।
  • अब इस सबएरे काउंट total को count में जोड़ें।
  • इंडेक्स first और last को वर्तमान i (इंडेक्स जहां लगातार तत्व की शर्त विफल होती है) से अपडेट करें।
  • फॉर लूप के अंत में यदि first != last। इसका मतलब है कि शेष सरणी शर्त को पूरा करती है। समान चरण लागू करें और total को count में जोड़ें।
  • दोनों लूप के अंत में, परिणाम के रूप में count लौटाएँ।

उदाहरण

#include <iostream>
using namespace std;

int sub_ele_diff_one(int arr[], int size) {
    int count = 0, first = 0, last = 0;
    for (int i = 1; i < size; i++) {
        if (arr[i] - arr[i - 1] == 1 || arr[i-1] - arr[i] == 1) {
            first++;
        } else {
            int temp = first - last + 1;
            int total = temp * (temp - 1) / 2;
            count = count + total;
            first = i;
            last = i;
        }
    }
    if (first != last) {
        int temp = first - last + 1;
        int total = temp * (temp - 1) / 2;
        count = count + total;
    }
    return count;
}

int main() {
    int arr[] = { 1, 2, 4, 3 };
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count of Subarrays with Consecutive elements differing by 1 are: " << sub_ele_diff_one(arr, size);
    return 0;
}

आउटपुट

Count of Subarrays with Consecutive elements differing by 1 are: 2
  1. - C++ में नाइस सबएरे की संख्या गिनें

    मान लीजिए हमारे पास इंटीजर्स का एक ऐरे nums और एक इंटीजर k है। एक सबएरे को नाइस सबएरे के रूप में जाना जाता है यदि उसमें k ऑड नंबर हैं। हमें नाइस सब-एरे की संख्या ढूंढनी है। यदि ऐरे [1,1,2,1,1] है, और k = 3, तो आउटपुट 2 होगा, क्योंकि सबएरे [1,1,2,1], और [1,2,1,1] हैं।इसे हल करने के लिए, हम निम्नलिखित

  1. - C++ में B से अधिक A वाले प्रीफिक्सेस

    इस समस्या में, हमें केवल a और b वाली स्ट्रिंग str और एक इंटीजर N दिया गया है जिससे str को N बार जोड़कर एक स्ट्रिंग बनाई जाती है। हमारा कार्य उन सबस्ट्रिंग्स की कुल संख्या प्रिंट करना है जिनमें a की गिनती b की गिनती से अधिक है।समस्या को समझने के लिए एक उदाहरण लेते हैंInput: aab 2 Output: 9 Explanatio

  1. - C++ में अभाज्य आवृत्ति वाले एरे तत्व

    एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। अभाज्य आवृत्ति (Prime Frequencies) का अर्थ है कि एरे के तत्व की घटनाओं की संख्या एक अभाज्य संख्या है। इसलिए, इन परिभाषाओं के आधार पर समस्या अभाज्य आवृत्ति वाले एरे तत्वों को खोजने की है। हमें एक स्ट्रिंग/एरे दिया गया है। हमें वर्णों की आवृत्ति