मान लीजिए कि हमारे पास एक पूर्णांक सरणी है, हमें एक निरंतर उप-सरणी खोजने की आवश्यकता है, जैसे कि, यदि हम केवल उस उप-सरणी को आरोही क्रम में क्रमबद्ध करते हैं, तो संपूर्ण सरणी को भी क्रमबद्ध किया जाएगा। हमें इस तरह के सबसे छोटे सबएरे को खोजने और इसकी लंबाई को आउटपुट करने की आवश्यकता है। तो अगर सरणी [2,6,4,8,10,9,15] है, तो आउटपुट 5 होगा। सरणी [6,4,8,10,9]
होगीइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
res :=अंकों को एक सरणी के रूप में क्रमबद्ध करें
-
उत्तर :=0
-
r को लिंक की गई सूची के रूप में सेट करें
-
मेरे लिए 0 से लेकर रेस की लंबाई तक
-
अगर nums[i] res[i] के समान नहीं है, तो i को r में डालें
-
-
यदि r की लंबाई 0 है, तो 0 लौटाएं, यदि r की लंबाई 1 है, तो 1 लौटाएं
-
r का अंतिम तत्व लौटाएं - r + 1 का पहला तत्व
उदाहरण (पायथन)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def findUnsortedSubarray(self, nums): res = sorted(nums) ans = 0 r = [] for i in range(len(res)): if nums[i] != res[i]: r.append(i) if not len(r): return 0 if len(r) == 1: return 1 return r[-1]-r[0]+1 ob1 = Solution() print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))
इनपुट
[2,6,4,8,10,9,15]
आउटपुट
5