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