मान लीजिए हमारे पास nums नामक एक सरणी है, हमें जांचना है कि क्या सरणी मूल रूप से नॉन-डिक्रीजिंग ऑर्डर में सॉर्टेड थी, और फिर कुछ पोजीशन (शून्य भी हो सकता है) से रोटेट की गई थी या नहीं। सरणी में डुप्लिकेट भी हो सकते हैं।
इसलिए, यदि इनपुट है: nums = [12,15,2,5,6,9], तो आउटपुट True होगा, क्योंकि यह दो स्थानों से दाएं रोटेटेड है।
हल करने के चरण
- j := 0
- जब j < nums का आकार - 1 और nums[j] <= nums[j + 1]: j := j + 1
- res := (nums का सबएरे इंडेक्स j+1 से अंत तक) concatenate (nums का सबएरे इंडेक्स 0 से j तक)
- i को 0 से res के आकार - 1 तक के लिए:
- यदि res[i] > res[i + 1], तो false वापस करें
- true वापस करें
उदाहरण (Python)
def solve(nums):
j = 0
while j < len(nums) - 1 and nums[j] <= nums[j + 1]:
j += 1
res = nums[j + 1:] + nums[:j + 1]
for i in range(len(res) - 1):
if res[i] > res[i + 1]:
return False
return True
nums = [12, 15, 2, 5, 6, 9]
print(solve(nums))
इनपुट
[12,15,2,5,6,9]
आउटपुट
True