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

जांचें कि क्या एक सरणी को सी ++ में क्रमबद्ध और घुमाया गया है

पूर्णांकों की एक सरणी को देखते हुए, कार्य यह जांचना है कि क्या सरणी को क्रमबद्ध किया गया है (बढ़ते क्रम में) और कुछ संख्या की स्थिति के बाद घुमाया गया है या नहीं।

उदाहरण के लिए

इनपुट-1:

N = [7, 8, 9, 4, 5, 6]

आउटपुट:

True

स्पष्टीकरण: चूंकि दी गई सरणी बढ़ते क्रम में है और तीसरी स्थिति के बाद के तत्वों को घुमाया जाता है, हम इस मामले में सही लौटेंगे।

इनपुट-2:

N = [1, 5, 7, 6, 2, 3]

आउटपुट:

False

स्पष्टीकरण: चूंकि दिया गया सरणी न तो बढ़ते क्रम में है और न ही किसी विशिष्ट स्थिति के साथ घुमाया गया है, आउटपुट गलत है।

इस समस्या को हल करने का तरीका

हमारे पास तत्व के साथ एक सरणी है जो या तो बढ़ते क्रम में है या क्रमबद्ध नहीं है। यदि सरणी को क्रमबद्ध और घुमाया जाना है, तो कम से कम एक तत्व ऐसा होगा कि N[i]> N[i+1]।

इस प्रकार, प्रत्येक एन [i] के लिए, हम गणना करेंगे कि क्या कोई तत्व है जो शर्त को पूरा करता है और तदनुसार सही या गलत लौटाता है।

  • सरणी तत्व का इनपुट लें।
  • एक बूलियन फ़ंक्शन checkSortedandRotated(int *arr, int n) इनपुट के रूप में एक सरणी और उसका आकार लेता है और यदि सरणी को सॉर्ट किया जाता है और घुमाया जाता है तो सही होता है।
  • पूरे सरणी पर पुनरावृति करें और उन तत्वों की संख्या गिनें जो (arr[i]> arr[i+1]%n) हैं। यदि गिनती '1' है, तो सही लौटें, अन्यथा गलत लौटें।
  • आउटपुट लौटाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
bool checkSortedandRotated(int * arr, int n) {
   int count = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] > arr[(i + 1) % n])
         count++;
   }
   return (count <= 1);
}
int main() {
   int arr[] = {5,6,7,1,2,3,4};
   int n = sizeof(arr) / sizeof(int);
   if (checkSortedandRotated(arr, n)) {
      cout << "True" << endl;
   } else {
      cout << "False" << endl;
   }
   return 0;
}

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

True

चूंकि दी गई सरणी [5, 6, 7, 1, 2, 3, 4] को तीसरे स्थान से क्रमबद्ध और घुमाया जाता है, इस मामले में हमें आउटपुट 'ट्रू' के रूप में मिलता है।


  1. जांचें कि दी गई सरणी जोड़ीदार क्रमबद्ध है या नहीं सी ++ में

    हमारे पास n तत्वों के साथ एक सरणी A है। हमें यह जांचना होगा कि सरणी जोड़ीदार क्रमबद्ध है या नहीं। मान लीजिए कि सरणी {8, 10, 18, 20, 5, 15} जैसी है। यह जोड़ी के अनुसार क्रमबद्ध है (8, 10), (18, 20), (5, 15) क्रमबद्ध हैं। यदि सरणी में विषम संख्या में तत्व हैं, तो अंतिम को अनदेखा कर दिया जाएगा। दृष्टि

  1. यह जांचने के लिए कार्यक्रम कि क्या एक सरणी को पायथन में क्रमबद्ध और घुमाया गया है

    मान लीजिए कि हमारे पास nums नामक एक सरणी है, हमें यह जांचना होगा कि क्या सरणी मूल रूप से गैर-घटते क्रम में सॉर्ट की गई थी, और फिर कुछ पदों को घुमाया गया (शून्य हो सकता है) या नहीं। डुप्लिकेट भी सरणी में मौजूद हो सकते हैं। इसलिए, यदि इनपुट nums =[12,15,2,5,6,9] की तरह है, तो आउटपुट ट्रू होगा, क्योंक

  1. जांचें कि क्या किसी सरणी को पायथन में क्रमबद्ध और घुमाया गया है

    मान लीजिए कि हमारे पास n अद्वितीय मानों की एक सरणी है। हमें यह जांचना होगा कि क्या यह ऐरे सॉर्ट किया गया है और एंटी-क्लॉकवाइज घुमाया गया है। यहां कम से कम एक घुमाव की आवश्यकता होती है, इसलिए पूरी तरह से क्रमबद्ध सरणी को क्रमबद्ध और घुमाया नहीं माना जाता है। इसलिए, यदि इनपुट संख्या =[4,5,6,8,1,3] की