用于查找元素比 Python 中的其他列表更小的数组的第一次拆分的最小长度的程序

假设我们有一个数字 nums 的列表,我们想将列表分成两部分 part1 和 part2,这样 part1 中的每个元素都小于或等于 part1 中的每个元素。我们必须找到可能的 part1 的最小长度(不是 0 长度)。

所以,如果输入像 nums = [3, 1, 2, 5, 4],那么输出将是 3,因为我们可以像 part1 = [3, 1, 2] 和 part2 = [5, 4]。

示例

让我们看看以下实现以获得更好的理解 -

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))

输入

[3, 1, 2, 5, 4]
输出结果
3

猜你喜欢