【每日一题】1423. 可获得的最大点数-2023.12.3

news/2024/11/7 20:57:41/

题目:

1423. 可获得的最大点数

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

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

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

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

示例 1:

输入:cardPoints = [1,2,3,4,5,6,1], k = 3
输出:12
解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的可获得点数。最优策略是拿右边的三张牌,最终点数为 1 + 6 + 5 = 12 。

示例 2:

输入:cardPoints = [2,2,2], k = 2
输出:4
解释:无论你拿起哪两张卡牌,可获得的点数总是 4 。

示例 3:

输入:cardPoints = [9,7,7,9,7,7,9], k = 7
输出:55
解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。

示例 4:

输入:cardPoints = [1,1000,1], k = 1
输出:1
解释:你无法拿到中间那张卡牌,所以可以获得的最大点数为 1 。 

示例 5:

输入:cardPoints = [1,79,80,1,1,1,200,1], k = 3
输出:202

提示:

  • 1 <= cardPoints.length <= 10^5
  • 1 <= cardPoints[i] <= 10^4
  • 1 <= k <= cardPoints.length

解答:

代码:

class Solution {public int maxScore(int[] cardPoints, int k) {int n=cardPoints.length;//晃动窗口大小为n-kint windowSize=n-k;//选前n-k个作为初始值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;}
}

结果:


http://www.ppmy.cn/news/1255130.html

相关文章

[c]比较月亮大小

本题的难点就是分情况讨论 #include<stdio.h> int main() {int n;scanf("%d",&n);int arr2[n];int p;for(int m0;m<n-1;m){scanf("%d",&arr2[m]);//输入n个数保存到数组}if(n1)//当输入一个数据时&#xff0c;输入0&#xff0c;可以判断…

《python编程从入门到实践》第2版 第十章课后练习

第十章 练习10-1练习10-2练习10-3练习10-4练习10-5练习10-6练习10-7练习10-8练习10-9练习10-10练习10-11练习10-12练习10-13 练习10-1 Python学习笔记 在文本编辑器中新建一个文件&#xff0c;写几句话来总结一下你至此学到的Python知识&#xff0c;其中每一行都以“In Python…

【数据结构/C++】树和二叉树_二叉链表

#include <iostream> using namespace std; // 二叉链表 typedef struct BiTNode {int data;struct BiTNode *lchild, *rchild;BiTNode(){lchild NULL;rchild NULL;} } BiTNode; // 初始化二叉链表 void InitBiTree(BiTNode *&T) {T NULL; } // 先序遍历 void Pre…

软件工程期末复习(1)

学习资料 软件工程知识点总结_嘤桃子的博客-CSDN博客 软件工程学习笔记_软件工程导论第六版张海藩pdf-CSDN博客 【软件工程】软件工程期末试卷习题课讲解&#xff01;&#xff01;_哔哩哔哩_bilibili 【拯救者】软件工程速成(期末考研复试软考)均适用. 支持4K_哔哩哔哩_bil…

Redis 实战缓存

本篇概要&#xff1a; 1. 设置、查询、获取过期时间&#xff1b;2. 缓存穿透&#xff1a;设置空键&#xff1b;3. 封杀单ip&#xff1b;4. 封杀ip段&#xff1b;5. 缓存预热&#xff1b;6. 使用 hash 数据类型保存新闻的缓存&#xff0c;增加点击量&#xff1b;7. Sorted set&a…

oops-framework框架 之 本地存储(五)

引擎&#xff1a; CocosCreator 3.8.0 环境&#xff1a; Mac Gitee: oops-game-kit 注&#xff1a; 作者dgflash的oops-framework框架QQ群&#xff1a; 628575875 简介 在CocosCreator中&#xff0c;本地存储主要使用sys.localStorage 接口&#xff0c;通过 key-value的格式进…

Vue3动态表单

示例代码如下&#xff1a; // 引入需要的依赖包 import { ref, reactive } from vue; import { useForm } from /composables/useForm;// 定义表单数据模型 const formModel reactive({name: ,age: ,gender: , });// 使用自定义的useForm函数创建表单实例 const { register, …

k8s部署rocketmq单节点(server+broker+console)—— 筑梦之路

之前写过几篇关于rocketmq构建双架构镜像、docker-compose部署的文章&#xff0c;接上篇docker-compose部署rocketmq&#xff0c;这里记录下k8s下如何部署。 多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路-CSDN博客 nameserver节点 apiVersion: apps/v1 kin…