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

Chương trình tìm độ dài tối thiểu của lần chia đầu tiên của một mảng có các phần tử nhỏ hơn danh sách khác trong Python

Giả sử chúng ta có một danh sách các số num, chúng ta muốn chia danh sách thành hai phần part1 và part2 sao cho mọi phần tử trong part1 nhỏ hơn hoặc bằng mọi phần tử trong part1. Chúng ta phải tìm độ dài nhỏ nhất của part1 có thể (không phải độ dài 0).

Vì vậy, nếu đầu vào là nums =[3, 1, 2, 5, 4], thì đầu ra sẽ là 3, vì chúng ta có thể chia danh sách như part1 =[3, 1, 2] và part2 =[5, 4].

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

  • p:=tối thiểu nums
  • s:=0
  • đối với tôi trong phạm vi từ 0 đến kích thước là nums - 1, thực hiện
    • nếu nums [i] giống với p, thì
      • s:=i
      • ra khỏi vòng lặp
  • p:=tối đa trong danh sách con gồm các num [từ chỉ mục 0 đến s]
  • ans:=s
  • đối với tôi trong phạm vi s + 1 đến kích thước là nums - 1, thực hiện
    • nếu nums [i]
    • ans:=i
  • return ans + 1
  • 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):
       p = min(nums)
       s = 0
       for i in range(len(nums)):
          if nums[i] == p:
             s = i
             break
       p = max(nums[: s + 1])
       ans = s
       for i in range(s + 1, len(nums)):
          if nums[i] < p:
             ans = i
       return ans + 1
    
    nums = [3, 1, 2, 5, 4]
    print(solve(nums))

    Đầu vào

    [3, 1, 2, 5, 4]

    Đầu ra

    3