أثناء لحلي لمشكلة في هاكر رانك صادفني مشكل غريب وهو عندما أشتغل بهذا الكود
def arrayManipulation(n, queries):
arr= [0]*n
for i in queries:
arr[i[0]-1]+=i[2]
if i[1]>=n:
continue
arr[i[1]]-=i[2]
maximum=0
temp=0
for i in range(n):
temp+=arr[i]
if maximum< temp:
maximum =temp
return maximum
يقوم بعمل submission بشكل عادي و تقبل الاجابة
لكن هذا الكود
def arrayManipulation(n, queries):
arr= [0]*n
for i in queries:
arr[i[0]-1]+=i[2]
if i[1]>=n:
continue
arr[i[1]]-=i[2]
maximum=arr[0]
for i in range(1, n):
arr[i]=arr[i-1]+arr[i]
if maximum< arr[i]:
maximum =arr[i]
return maximum
يظهر لي runtime error في حالة الاختبار ب large dataset 10**7 .لكن في الحالات الخفيفة و المتوسطة الكود يشتغل بشكل جيد.
هل يعود السبب الى أن تحديث المصفوفة كل مرة يستهلك الذاكرة .
حاولت أن أفهم سبب وراء صحة الكود الاول و خطأ الكود الثاني لكني لم أتوصل الى اجابة.
السؤال
Zakaryae Bennani
السلام عليكم ورحمة الله تعالى وبركاته.
أثناء لحلي لمشكلة في هاكر رانك صادفني مشكل غريب وهو عندما أشتغل بهذا الكود
def arrayManipulation(n, queries):
arr= [0]*n
for i in queries:
arr[i[0]-1]+=i[2]
if i[1]>=n:
continue
arr[i[1]]-=i[2]
maximum=0
temp=0
for i in range(n):
temp+=arr[i]
if maximum< temp:
maximum =temp
return maximum
يقوم بعمل submission بشكل عادي و تقبل الاجابة
لكن هذا الكود
def arrayManipulation(n, queries):
arr= [0]*n
for i in queries:
arr[i[0]-1]+=i[2]
if i[1]>=n:
continue
arr[i[1]]-=i[2]
maximum=arr[0]
for i in range(1, n):
arr[i]=arr[i-1]+arr[i]
if maximum< arr[i]:
maximum =arr[i]
return maximum
يظهر لي runtime error في حالة الاختبار ب large dataset 10**7 .لكن في الحالات الخفيفة و المتوسطة الكود يشتغل بشكل جيد.
هل يعود السبب الى أن تحديث المصفوفة كل مرة يستهلك الذاكرة .
حاولت أن أفهم سبب وراء صحة الكود الاول و خطأ الكود الثاني لكني لم أتوصل الى اجابة.
اسم المشكلة array manipulation.
جزاكم الله خيرا.
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.