LeetCode 1423. 可获得的最大点数

LeetCode 1423. 可获得的最大点数

一、题目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


二、思路

滑动窗口思路
先保存数组前 k 个值的和作为窗口初始值, 然后窗口每次向右滑动一格, 滑动窗口的值 减去旧的最左边的值,加上新加入窗口的值, 在这过程中保存最大值

注意遍历数组条件不是移到数组最末端,而是移动到第k个就得停下来,因为题目说只能从最左边和最右边取


三、代码实现(Java)

class Solution {
    
    
    public int maxScore(int[] cardPoints, int k) {
    
    
        int cnt = 0;
        int len = cardPoints.length;
        for(int i = 0; i<k; i++) {
    
    
            cnt += cardPoints[i];  //窗口初始值
        }
        int res = cnt;
        for(int i = 0; i<k; i++) {
    
    
            cnt += cardPoints[len-i-1];  //窗口加入新的最右边的值
            cnt -= cardPoints[k-i-1];    //窗口减去旧的最左边的值
            res = Math.max(res,cnt);
        }
        return res;
    }
}

坚持分享,坚持原创,喜欢博主的靓仔靓女们可以看看博主的首页博客!
您的点赞与收藏是我分享博客的最大赞赏!
博主博客地址: https://blog.csdn.net/weixin_43967679

猜你喜欢

转载自blog.csdn.net/weixin_43967679/article/details/113726218
今日推荐