微软笔试第三题

public int solution(int[] A, int X, int Y) {

    int n = A.length;

    int[] cnt = new int[Y];

    int res = (int)1e9;

    for (int start = 0; start < Y; start++) {

        if (start + (X - 1) * Y >= n)

            break;

        for (int i = 0; i < X; i++) {

            cnt[start] += A[start + i * Y];

        }

        res = Math.min(res, cnt[start]);

        for (int begin = start; begin + X * Y < n; begin += Y) {

            cnt[start] -= A[begin];

            cnt[start] += A[begin + X * Y];

            res = Math.min(res, cnt[start]);

        }

    }

    return res;

}


#校招##面经##微软#
全部评论
跟你做法一样,某种程度上也相当于用了sliding window
点赞
送花
回复 分享
发布于 2022-08-14 17:21

相关推荐

1 3 评论
分享
牛客网
牛客企业服务