Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm cách tạo một mảng hợp lý bằng Python

Giả sử chúng ta có một mảng được gọi là nums. Chúng ta có thể chọn chính xác một chỉ mục và xóa phần tử khỏi chỉ mục đó. (Chỉ số của các phần tử có thể thay đổi sau khi loại bỏ). Chúng ta có thể nói một mảng là công bằng khi tổng các giá trị được lập chỉ mục lẻ bằng tổng các giá trị được lập chỉ mục chẵn. Chúng tôi phải tìm số lượng chỉ số mà chúng tôi có thể chọn sao cho sau khi loại bỏ, số lượng là hợp lý.

Vì vậy, nếu đầu vào là nums =[5,3,7,2], thì đầu ra sẽ là

  • Xóa khỏi chỉ mục 0, mảng là [3,7,2], tổng vị trí chẵn:3 + 2 =5, tổng vị trí lẻ 7 (Không công bằng)

  • Xóa khỏi chỉ mục 1, mảng là [5,7,2], tổng vị trí chẵn:5 + 2 =7, tổng vị trí lẻ 7 (công bằng)

  • Xóa khỏi chỉ mục 2, mảng là [5,3,2], tổng vị trí chẵn:5 + 2 =7, tổng vị trí lẻ 3 (Không công bằng)

  • Xóa khỏi chỉ số 3, mảng là [5,3,7], tổng vị trí chẵn:5 + 7 =12, tổng vị trí lẻ 3 (Không công bằng)

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • res:=0, sm1:=0, sm2:=0
  • đối với tôi trong phạm vi từ 1 đến kích thước là nums - 1, thực hiện
    • nếu tôi là số chẵn, thì
      • sm1:=sm1 + nums [i]
    • nếu không,
      • sm2:=sm2 + nums [i]
  • nếu sm1 giống với sm2, thì
    • res:=res + 1
  • đối với tôi trong phạm vi từ 1 đến kích thước là nums - 1, thực hiện
    • nếu tôi là số lẻ, thì
      • sm1:=sm1 - nums [i] + nums [i-1]
    • nếu không,
      • sm2:=sm2 - nums [i] + nums [i-1]
    • nếu sm1 giống với sm2, thì
      • res:=res + 1
  • trả lại res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(nums):
   res, sm1, sm2 = 0, 0, 0
   for i in range(1, len(nums)):
      if i%2 == 1:
         sm1 += nums[i]
      else:
         sm2 += nums[i]
   if sm1 == sm2:
      res += 1

   for i in range(1, len(nums)):
      if i % 2 == 1:
         sm1 = sm1 - nums[i] + nums[i-1]
      else:
         sm2 = sm2 - nums[i] + nums[i-1]
      if sm1 == sm2:
         res += 1

   return res

nums = [5,3,7,2]
print(solve(nums))

Đầu vào

[5,3,7,2]

Đầu ra

1