मान लीजिए हमारे पास nums नामक असॉर्टेड संख्याओं की एक सरणी है। हमें जांचना है कि क्या इसमें सन्निकट मान हैं या नहीं, यह ऋणात्मक संख्याओं को भी सपोर्ट करना चाहिए।
उदाहरण के लिए, यदि nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3] है, तो आउटपुट True होगा क्योंकि तत्व -3, -2, -1, 0, 1, 2, 3, 4, 5 हैं।
हल करने का तरीका
- size := nums का आकार
- init_term := अनंत (बहुत बड़ी संख्या)
- न्यूनतम मान ढूंढें (init_term)
- ap_sum := (size × (2 × init_term + (size - 1) × 1)) / 2 - AP का योग सूत्र
- total := nums के सभी तत्वों का योग
- यदि ap_sum == total तो True अन्यथा False लौटाएं
यह तरीका AP योग सूत्र का उपयोग करता है और O(1) अतिरिक्त स्थान लेता है।
उदाहरण
def solve(nums):
size = len(nums)
init_term = 999999
for i in range(size):
if nums[i] < init_term:
init_term = nums[i]
ap_sum = (size * (2 * init_term + (size - 1) * 1)) // 2
total = sum(nums)
return ap_sum == total
nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3]
print(solve(nums))
इनपुट
[-3, 5, 1, -2, -1, 0, 2, 4, 3]
आउटपुट
True