zoukankan      html  css  js  c++  java
  • 1658. 将 x 减到 0 的最小操作数

    给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。

    如果可以将 x 恰好 减到 0 ,返回 最小操作数 ;否则,返回 -1 。

    示例 1:

    输入:nums = [1,1,4,2,3], x = 5
    输出:2
    解释:最佳解决方案是移除后两个元素,将 x 减到 0 。
    示例 2:

    输入:nums = [5,6,7,8,9], x = 4
    输出:-1
    示例 3:

    输入:nums = [3,2,20,1,1,3], x = 10
    输出:5
    解释:最佳解决方案是移除后三个元素和前两个元素(总共 5 次操作),将 x 减到 0 。
     

    提示:

    1 <= nums.length <= 105
    1 <= nums[i] <= 104
    1 <= x <= 109

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/minimum-operations-to-reduce-x-to-zero
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    根本还是sliding window灵活运用

    class Solution:
        def minOperations(self, nums: List[int], x: int) -> int:
            maxWin=-1
            s=sum(nums)
            curSum=0
            l=r=0
            while l<len(nums):
                if r<len(nums):
                    curSum+=nums[r]
                    r+=1
                while curSum>s-x and l<len(nums):
                    curSum-=nums[l]
                    l+=1
                if curSum==s-x:
                    maxWin=max(maxWin,r-l)
                if r==len(nums):
                    l+=1
            return -1 if maxWin==-1 else len(nums)-maxWin
  • 相关阅读:
    centos7.5搭建zabbix3.4.x以及mysql定制化监控
    dockerfile 的常用讲解
    使用nginx快速搭建文件服务器
    centos7 安装ELK
    centos7 安装Gitlab
    centos7 安装jenkins
    ansible-playbook使用详解
    DNS主从配置
    ansible 安装部署文档
    WPF Grid MouseWheel事件无法触发
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13984258.html
Copyright © 2011-2022 走看看