التحدي
-
لديك مصفوفة من الأرقام الصحيحة (مثل
[3, 2, 5, 1]
). -
مهمتك هي تعديل هذه الأرقام بحيث تصبح المصفوفة مرتبة تصاعديًا.
-
بمعنى أن كل عنصر في المصفوفة يجب أن يكون أكبر من أو يساوي العنصر الذي يسبقه.
-
مثال:
[3, 3, 5, 5]
مقبول لأن كل رقم >= الرقم الذي قبله. -
كيفية التعديل؟
-
يمكنك زيادة قيمة أي رقم بمقدار 1 أو أكثر.
-
كل مرة تزيد فيها قيمة رقم بمقدار 1، تكسب نقطة واحدة.
-
الهدف: إيجاد أقل عدد ممكن من النقاط لجعل المصفوفة مرتبة كما هو مطلوب.
مثال عملي
إذا كانت المصفوفة: [3, 2, 5, 1]
، فإليك الخطوات الممكنة:
-
اجعل العنصر الثاني (2) مساوياً أو أكبر من العنصر الأول (3)، أي عدّله إلى 3. (تكلفة: 1 نقطة).
-
العنصر الثالث (5) لا يحتاج إلى تعديل لأنه بالفعل أكبر من العنصر الثاني.
-
العنصر الرابع (1) يحتاج إلى تعديل ليصبح مساوياً أو أكبر من العنصر الثالث (5)، أي عدّله إلى 5. (تكلفة: 4 نقاط).
إجمالي النقاط: 1 + 4 = 5 نقاط
طبعا الداله ف الاخر هتطلعلي عدد النقاط اللي استخدمتها
و دا مثال علي الامدخلات و المخرجات عشان تراجع حلك:
المدخلات (Inputs)
arr = [3, 2, 5, 1, 7]
المخرجات (Outputs)
5
النص المساعد :
from typing import List
def increasing_array(arr: List[int]) -> int:
# write your code here ^_^
ملحوظه :
طريقه كتابه الفانكشن هنا هي طريقه بتستخدمها المواقع عشان تسرع التصحيح
لو انت حاسس ان شكلها مثلا مدايقك فا اعتبرها كدا :
def increasing_array(arr):
#the arr must be anly int
# write your code here ^_^
اضغط هنا لرؤية الحل
from typing import List
def increasing_array(arr: List[int]) -> int:
total = 0 # لتتبع مجموع النقاط المطلوبة
for i in range(1, len(arr)):
if arr[i] < arr[i - 1]: # إذا كان العنصر الحالي أصغر من العنصر السابق
diff = arr[i - 1] - arr[i] # احسب الفرق
arr[i] += diff # عدّل العنصر الحالي ليصبح مساوياً للعنصر السابق
total += diff # أضف الفرق إلى المجموع
return total # أعد عدد النقاط المطلوبة
# اختبار الكود
print(increasing_array([3, 2, 5, 1, 7])) # الناتج: 5