मान लीजिए हमारे पास धनात्मक मानों वाली nums नामक एक सरणी है, हमें लंबाई m का एक पैटर्न ढूंढना है जो k या k से अधिक बार दोहराया जाता है। यहां एक पैटर्न एक नॉन-ओवरलैपिंग सबएरे (लगातार) है जिसमें एक या अधिक मान होते हैं और कई बार दोहराए जाते हैं। एक पैटर्न को उसकी लंबाई और दोहराव की संख्या द्वारा परिभाषित किया जाता है। हमें जांचना है कि क्या लंबाई m का एक पैटर्न मौजूद है जो k या अधिक बार दोहराया जाता है या नहीं।
इसलिए, यदि इनपुट है: nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1], m = 3, k = 2, तो आउटपुट True होगा क्योंकि [1,4,3] पैटर्न 3 बार मौजूद है।
हल करने के चरण
- i को 0 से nums के आकार - 1 तक के लिए:
- sub1 := nums का सबएरे इंडेक्स i से (i+m*k) - 1 तक
- sub2 := nums का इंडेक्स i से (i+m-1) तक का k लगातार सबएरे
- यदि sub1, sub2 के समान है, तो true वापस करें
- false वापस करें
उदाहरण (Python)
def solve(nums, m, k):
for i in range(len(nums)):
sub1 = nums[i:i+m*k]
sub2 = nums[i:i+m] * k
if sub1 == sub2:
return True
return False
nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1]
m = 3
k = 2
print(solve(nums, m, k))
इनपुट
[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2
आउटपुट
True