मान लीजिए कि हमारे पास n अद्वितीय मानों की एक सरणी है। हमें यह जांचना होगा कि क्या यह ऐरे सॉर्ट किया गया है और एंटी-क्लॉकवाइज घुमाया गया है। यहां कम से कम एक घुमाव की आवश्यकता होती है, इसलिए पूरी तरह से क्रमबद्ध सरणी को क्रमबद्ध और घुमाया नहीं माना जाता है।
इसलिए, यदि इनपुट संख्या =[4,5,6,8,1,3] की तरह है, तो आउटपुट सही होगा क्योंकि हम दो बार दक्षिणावर्त दिशा में घुमा सकते हैं तो इसे [1, 3, 4, 5, 6, 8].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- min_element :=न्यूनतम अंक
- min_index :=min_element का अंकों में सूचकांक
- पहले_क्रमबद्ध:=सत्य
- मैं के लिए 1 से min_index -1 की सीमा में, करो
- यदि अंक [i] <अंक [i - 1], तो
- पहले_क्रमबद्ध :=गलत
- लूप से बाहर आएं
- यदि अंक [i] <अंक [i - 1], तो
- आफ्टर_सॉर्टेड :=ट्रू
- मेरे लिए min_index + 1 से लेकर अंकों के आकार -1 तक की सीमा में
- यदि अंक [i] <अंक [i - 1], तो
- बाद_क्रमबद्ध :=गलत
- लूप से बाहर आएं
- यदि अंक [i] <अंक [i - 1], तो
- अगर पहले_सॉर्ट किए गए और बाद_सॉर्ट किए गए अंकों के सही और अंतिम तत्व हैं <अंक[0], तो
- सही लौटें
- अन्यथा,
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(nums): min_element = 999999 min_index = -1 min_element = min(nums) min_index = nums.index(min_element) before_sorted = True for i in range(1, min_index): if nums[i] < nums[i - 1]: before_sorted = False break after_sorted = True for i in range(min_index + 1, len(nums)): if nums[i] < nums[i - 1]: after_sorted = False break if before_sorted and after_sorted and nums[-1] < nums[0]: return True else: return False nums = [4,5,6,8,1,3] print(solve(nums))
इनपुट
[4,5,6,8,1,3]
आउटपुट
True