微软笔试第三题

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

相关推荐

爱睡觉的冰箱哥:学历不够啊兄弟,分析师都是9硕✌🏻咱搞不过他们滴
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务