मान लीजिए कि हमारे पास अद्वितीय तत्वों के साथ nums नामक एक सरणी है। हमें यह जांचना होगा कि एक उप-सरणी को उलटने के बाद सरणी को क्रमबद्ध किया जाएगा या नहीं। यदि सरणी पहले से ही क्रमबद्ध है, तो भी सही लौटें।
इसलिए, यदि इनपुट nums =[4,6,27,25,15,9,37,42] की तरह है, तो आउटपुट सही होगा क्योंकि अगर हम [9,15,25,27] को उल्टा करते हैं, तो सरणी क्रमबद्ध किया जाएगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=अंकों का आकार
- यदि सरणी में केवल एक तत्व है तो सही लौटें
- मैं :=1
- मैं के लिए 1 से n -1 की सीमा में, करो
- यदि अंक [i - 1] <अंक [i], तो
- यदि i, n के समान है, तो सही लौटें, अन्यथा लूप से बाहर आएं
- यदि अंक [i - 1] <अंक [i], तो
- j :=i
- जबकि j
- यदि i> 1 और अंक [j] <अंक [i - 2], तो झूठी वापसी करें
- j :=j + 1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण कोड
def solve(nums): n = len(nums) if n == 1: return True i = 1 for i in range(1, n): if nums[i - 1] < nums[i] : if i == n: return True else: break j = i while j < n and nums[j] < nums[j - 1]: if i > 1 and nums[j] < nums[i - 2]: return False j += 1 if j == n: return True k = j if nums[k] < nums[i - 1]: return False while k > 1 and k < n: if nums[k] < nums[k - 1]: return False k += 1 return True nums = [4,6,27,25,15,9,37,42] print(solve(nums))
इनपुट
[4,6,27,25,15,9,37,42]
आउटपुट
True