मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें यह जांचना है कि क्या हम रोटेशन का उपयोग करके nums को सॉर्ट कर सकते हैं या नहीं। रोटेशन द्वारा हम nums के अंत से कुछ सन्निकट तत्वों को शिफ्ट कर सकते हैं और उन्हें सरणी के सामने रख सकते हैं।
तो, यदि इनपुट nums = [4,5,6,1,2,3] है, तो आउटपुट True होगा क्योंकि हम अंतिम तीन तत्वों को घुमाकर उन्हें पहले भेजकर सॉर्ट कर सकते हैं।
हल करने के चरण
- n := nums का आकार
- यदि nums सॉर्टेड है, तो:
- True लौटाएं
- अन्यथा,
- status := True
- रेंज 0 से n - 2 तक के लिए i, करें:
- यदि nums[i] > nums[i + 1], तो:
- लूप से बाहर आएं
- यदि nums[i] > nums[i + 1], तो:
- i := i + 1
- रेंज i से n - 2 तक के लिए k, करें:
- यदि nums[k] > nums[k + 1], तो:
- status := False
- लूप से बाहर आएं
- यदि nums[k] > nums[k + 1], तो:
- यदि status false है, तो:
- False लौटाएं
- अन्यथा,
- यदि nums[n - 1] <= nums[0], तो:
- True लौटाएं
- False लौटाएं
- यदि nums[n - 1] <= nums[0], तो:
उदाहरण
def solve(nums):
n = len(nums)
if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)):
return True
else:
status = True
for i in range(n - 1):
if nums[i] > nums[i + 1]:
break
i += 1
for k in range(i, n - 1):
if nums[k] > nums[k + 1]:
status = False
break
if not status:
return False
else:
if nums[n - 1] <= nums[0]:
return True
return False
nums = [4,5,6,1,2,3]
print(solve(nums))
इनपुट
[4,5,6,1,2,3]
आउटपुट
True