程序查找两端需要删除的最少数量,以使列表在Python中保持平衡

假设我们有一个包含0和1的列表,我们必须从列表的前面或后面删除值。最后,我们必须找到所需的最小删除数目,以使其余列表具有相等的0和1。

因此,如果输入类似于nums = [1,1,1,0,0,1],则输出将为2,因为我们可以删除第一个1和最后一个1,以便有两个1和两个0 。

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

  • 最长:= 0

  • d:=一个映射,其中键0的值为-1

  • currSum:= 0

  • 对于范围从0到nums的i,执行

    • d [currSum]:= i

    • 最长:=最长和i-d [currSum]的最大值

    • currSum:= currSum + 1

    • currSum:= currSum-1

    • 如果nums [i]等于0,则

    • 除此以外,

    • 如果currSum在d中,则

    • 除此以外,

    • 返回的数字大小-最长

    让我们看下面的实现以更好地理解-

    示例

    class Solution:

       def solve(self, nums):

          longest = 0

          d = {0 : -1}

          currSum = 0

          for i in range(len(nums)):

             if nums[i] == 0:

                currSum -= 1

             else:

                currSum += 1

             if currSum in d:

                longest = max(longest, i - d[currSum])

             else:

                d[currSum] = i

          return len(nums) - longest

    ob = Solution()nums = [1, 1, 1, 0, 0, 1] print(ob.solve(nums))

    输入值

    [1, 1, 1, 0, 0, 1]

    输出结果

    2

    以上是 程序查找两端需要删除的最少数量,以使列表在Python中保持平衡 的全部内容, 来源链接: utcz.com/z/335162.html

    回到顶部