截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
视频链接
最后再来看下代码
public int maxScore(int[] cardPoints, int k) {
int maxWindow = 0, length = cardPoints.length;
//先统计前k个元素的和,也是窗口内元素的和
for (int i = 0; i < k; i++)
maxWindow += cardPoints[i];
//然后窗口移动,更新当前窗口的值
int curWindow = maxWindow;
for (int i = length - 1; i >= length - k; i--) {
//窗口移动的时候一个元素会出窗口,一个元素会进入窗口。
//cardPoints[k - (length - i)]是移除窗口的元素
curWindow -= cardPoints[k - (length - i)];
//cardPoints[i]是进入窗口的元素
curWindow += cardPoints[i];
//记录窗口的最大值
maxWindow = Math.max(maxWindow, curWindow);
}
return maxWindow;
}