码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 930 Binary Subarrays With Sum (双指针)

时间:2020-03-18 20:07:01      阅读:41      评论:0      收藏:0      [点我收藏+]

标签:++i   put   目录   atm   output   描述   toc   with   lan   

Leetcode

问题描述

In an array A of 0s and 1s, how many non-empty subarrays have sum S?

例子

Example 1:
Input: A = [1,0,1,0,1], S = 2
Output: 4
Explanation: 
The 4 subarrays are bolded below:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]

方法一

** Solution Java **
** 2ms, beats 84.49% **
** 44MB, beats 25.00% **
class Solution {
    public int numSubarraysWithSum(int[] A, int S) {
        int n = A.length, res = 0, sum = 0;
        int[] map = new int[n + 1];
        map[0] = 1;
        for (int i = 0; i < n; ++i) {
            sum += A[i];
            if (sum >= S) 
                res += map[sum - S];
            ++map[sum];
        }
        return res;
    }
}

方法二

** Solution Java **
** 1ms, beats 100.00% **
** 44.3MB, beats 25.00% **
class Solution {
    public int numSubarraysWithSum(int[] A, int S) {
        return atMost(A, S) - atMost(A, S - 1);
    }
    private int atMost(int[] A, int S) {
        if (S < 0) 
            return 0;
        int res = 0, n = A.length;
        for (int i = 0, j = 0; j < n; ++j) {
            S -= A[j];
            while (S < 0) 
                S += A[i++];
            res += j - i + 1;
        }
        return res;
    }
}

Leetcode 930 Binary Subarrays With Sum (双指针)

标签:++i   put   目录   atm   output   描述   toc   with   lan   

原文地址:https://www.cnblogs.com/willwuss/p/12519571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!