मान लीजिए हमारे पास विभिन्न पूर्णांक मानों वाली एक सरणी और दी गई लंबाई k है। हमें दी गई लंबाई के सरणी से सबसे बड़ा सबएरे खोजना है। एक सबएरे को दूसरे सबएरे से बड़ा कहा जाता है, यदि subarray1[i] ≠ subarray2[i] और subarray1[i] > subarray2[i]।
उदाहरण के लिए, यदि इनपुट है nums = [5, 3, 7, 9], k = 2, तो आउटपुट [7, 9] होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- start := nums का आकार - k
- max_element := nums[start]
- max_index := start
- जब start >= 0:
- यदि nums[start] > max_element, तो:
- max_element := nums[start]
- max_index := start
- nums[max_index से max_index + k तक] लौटाएं
- यदि nums[start] > max_element, तो:
- nums[max_index से max_index + k तक] लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(nums, k):
start = len(nums) - k
max_element = nums[start]
max_index = start
while start >= 0:
if nums[start] > max_element:
max_element = nums[start]
max_index = start
start -= 1
return nums[max_index:max_index + k]
print(solve([5, 3, 7, 9], 2))इनपुट
[5, 3, 7, 9], 2
आउटपुट
[7, 9]