算法 | 每日一题 | 可获得的最大点数 | 滑动窗口

1423. 可获得的最大点数

原题地址: 力扣每日一题:可获得的最大点数

几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。

每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。

你的点数就是你拿到手中的所有卡牌的点数之和。

给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。

这两天正好在做一些滑动窗口的题目,这道题使用滑动窗口解题会非常简单,因为取走的数是两边的数,所以把中间的数看作一个长度为 n - k 的滑动窗口即可。

class Solution {
   
    public int maxScore(int[] cardPoints, int k) {
   
        int n = cardPoints.length;
        int windowSize = n - k;
        // 最前面作为滑动窗口初始值,不断移动寻找 sum 的最小值
        int sum = 0;
        for (int i = 0; i < windowSize; i++) {
   
            sum += cardPoints[i];
        }
        int minSum = sum;
        for (int i = windowSize; i < n; i++) {
   
            sum += cardPoints[i] - cardPoints[i - windowSize];
            minSum = Math.min(minSum, sum);
        }
        return Arrays.stream(cardPoints).sum() - minSum;
    }
}

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤
个人主页:星不易
每日一题专栏:不易|力扣算法每日一题

相关推荐

  1. 算法 | 每日 | 获得点数 | 滑动窗口

    2023-12-08 20:32:03       66 阅读
  2. 力扣每日day25[239. 滑动窗口值]

    2023-12-08 20:32:03       54 阅读
  3. 每日(LeetCode)----栈和队列--滑动窗口

    2023-12-08 20:32:03       64 阅读
  4. 每日 --- 滑动窗口值[力扣][Go]

    2023-12-08 20:32:03       38 阅读
  5. leetcode做笔记1423. 获得点数

    2023-12-08 20:32:03       55 阅读
  6. leetcode_1423 获得点数

    2023-12-08 20:32:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 20:32:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 20:32:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 20:32:03       87 阅读
  4. Python语言-面向对象

    2023-12-08 20:32:03       96 阅读

热门阅读

  1. 阿里云docker加速

    2023-12-08 20:32:03       52 阅读
  2. Android 9.0 Settings增加OTG开关

    2023-12-08 20:32:03       55 阅读
  3. SpringBoot使用自定义注解、AOP实现API接口日志记录

    2023-12-08 20:32:03       70 阅读
  4. Connection reset

    2023-12-08 20:32:03       51 阅读
  5. Flask 最佳实践(一)

    2023-12-08 20:32:03       48 阅读