मान लीजिए हमारे पास n इंटीजर्स का एक ऐरे है, हमें यह जांचना है कि क्या यह अधिकतम एक एलिमेंट को मॉडिफाई करके नॉन-डिक्रीजिंग बन सकता है। हम एक ऐरे को नॉन-डिक्रीजिंग परिभाषित करते हैं यदि यह इस नियम को संतुष्ट करता है: array[i] <= array[i + 1] प्रत्येक i (1 <= i < n) के लिए। इसलिए यदि ऐरे [4,2,3] है, तो उत्तर true होगा। हम इसे नॉन-डिक्रीजिंग ऐरे में बदल सकते हैं यदि हम 4 को 1 बना दें, तब ऐरे [1,2,3] बन जाएगा।
समाधान के चरण
- यदि ऐरे में 2 या उससे कम एलिमेंट्स हैं, तो true लौटाएं
- ans := False
- for i in range 0 से ऐरे की लंबाई - 2 तक
- यदि arr[i] > arr[i + 1]
- यदि ans नॉन-ज़ीरो है, तो false लौटाएं, अन्यथा ans := True
- यदि i > 0
- यदि arr[i - 1] > arr[i + 1], तो arr[i + 1] := arr[i]
- यदि arr[i] > arr[i + 1]
- true लौटाएं
उदाहरण (पायथन)
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class Solution(object):
def checkPossibility(self, nums):
if len(nums) <= 2:
return True
ans = False
for i in range(len(nums)-1):
if nums[i] > nums[i+1]:
if ans:
return False
else:
ans = True
if i > 0:
if nums[i-1] > nums[i+1]:
nums[i+1] = nums[i]
return True
ob1 = Solution()
print(ob1.checkPossibility([4,2,3,5]))
इनपुट
[4,2,3,5]
आउटपुट
True