• 1667. 区间统计(回顾)


    1667. 区间统计

    CAT 专属题目
    中文English

    给定一个01数组 arr 和 一个整数 k, 统计有多少区间符合如下条件:

    1. 区间的两个端点都为 0 (允许区间长度为1)
    2. 区间内 1 的个数不多于 k

    样例

    样例 1:

    输入: arr = [0, 0, 1, 0, 1, 1, 0], k = 1
    输出: 7
    解释: [0, 0], [1, 1], [3, 3], [6, 6], [0, 1], [0, 3], [1, 3] (区间 [i,j] 表示下标 i(包括)和下标 j(包括)之间的元素)
    

    样例 2:

    输入: arr = [1, 1, 1, 0, 0, 1], k = 2
    输出: 3
    解释: [3, 3], [4, 4], [3, 4] (区间 [i,j] 表示下标 i(包括)和下标 j(包括)之间的元素)
    

    注意事项

    arr 的大小不超过 10^5

     
     
    输入测试数据 (每行一个参数)如何理解测试数据?

     同向型双指针:

    class Solution:
        """
        @param arr: the 01 array
        @param k: the limit 
        @return: the sum of the interval
        """
        def intervalStatistics(self, arr, k):
            # Write your code here.
            #首先right走到0的位置,然后left也走到的位置,计算之间1的个数,如果大于k,则left += 1,一直到符合为止
            
            length = len(arr)
            left, right = 0, 0 
            numofone = 0 
            count = 0 
            
            while right < length:
                #首先right走到0的位置
                if (arr[right] == 1):
                    numofone += 1 
                    right += 1 
                    continue
                
                #然后left走到0的位置
                if (arr[left] == 1):
                    numofone -= 1 
                    left += 1 
                    continue
                
                #此时right和left均在0的位置,判断如果numofone大于k,则left走到numofone小于k的时候为止
                while numofone > k:
                    if (arr[left] == 1):
                        numofone -= 1 
                    left += 1 
                
                #此时numofone满足条件,如果当前值为0,left = right ,numofone为0,则加1
                #如果left != right,则加 + left到right之间为0的个数,即 -numofone,[left, right]
                count = right - left + 1 + count - numofone
                right += 1 
            
            return count   
            
  • 相关阅读:
    token验证流程
    mongodb常用命令
    vue生命周期详解
    json-server基本使用
    Vue实现一个简单的todolist
    [高级软件工程教学]个人第2次作业第一次测评结果
    [福大高级软工教学]个人第1次作业成绩公布
    nginx+tomcat负载均衡
    apache 工作模式
    Apache主要的配置文件们
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13512064.html
Copyright © 2020-2023  润新知