在Python中找到第一个比其他列表中元素小的数组的最小长度的程序

在Python中找到第一个比其他列表中元素小的数组的最小长度的程序

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

如果输入类似于nums = [3, 1, 2, 5, 4],那么输出将是3,因为我们可以将列表分成part1 = [3, 1, 2]和part2 = [5, 4]。

为了解决这个问题,我们将遵循以下步骤 –

  • p :nums中的最小值
  • s :0
  • 对于i从0到nums大小的范围,做
    • 如果nums [i]与p相同,那么
      • s := i
      • 退出循环
  • p :nums [从索引为0到s的子列表的最大值]
  • ans :s
  • 对于i从s + 1到nums大小的范围,做
    • 如果nums [i]
    • ans :i

    • 返回ans + 1

范例

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程