मान लीजिए कि हमारे पास एक सूची संख्या है और दूसरा मान k है, हमें आकार k के प्रत्येक उप-सूची के अधिकतम मान ज्ञात करने हैं।
इसलिए, यदि इनपुट संख्या =[12, 7, 3, 9, 10, 9] k =3 जैसा है, तो आउटपुट [12, 9, 10, 10]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर k> अंकों का आकार, तो
-
एक खाली सूची लौटाएं
-
-
रेस :=एक नई सूची
-
अस्थायी:=अंक [0]
-
अस्थायी :=npoint :=0
-
0 से k − 1 की सीमा में i के लिए, करें
-
अगर अंक [i]> अस्थायी, तो
-
अस्थायी:=अंक [i]
-
बिंदु :=मैं
-
-
-
रेस के अंत में अस्थायी डालें
-
k से लेकर अंकों के आकार की श्रेणी में i के लिए, करें
-
यदि अंक [i] <अस्थायी और (i - बिंदु)
-
अस्थायी:=अंक [बिंदु]
-
-
अन्यथा जब अंक [i] <अस्थायी और (i - बिंदु)>=k, तब
-
बिंदु :=i - k + 1
-
j के लिए i − k + 1 से i की श्रेणी में, करें
-
अगर अंक [जे]> अंक [बिंदु], तो
-
बिंदु :=j
-
-
-
अस्थायी:=अंक [बिंदु]
-
-
अन्यथा,
-
अस्थायी:=अंक [i]
-
बिंदु :=मैं
-
-
रेस के अंत में अस्थायी डालें
-
-
रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums, k): if k > len(nums): return [] res = [] temp = nums[0] point = 0 for i in range(k): if nums[i] > temp: temp = nums[i] point = i res.append(temp) for i in range(k, len(nums)): if nums[i] < temp and (i − point) < k: temp = nums[point] elif nums[i] < temp and (i − point) >= k: point = i − k + 1 for j in range(i − k + 1, i + 1): if nums[j] > nums[point]: point = j temp = nums[point] else: temp = nums[i] point = i res.append(temp) return res ob = Solution() nums = [12, 7, 3, 9, 10, 9] k = 3 print(ob.solve(nums, k))
इनपुट
[12, 7, 3, 9, 10, 9], 3
आउटपुट
[12, 9, 10, 10]