【力扣】——可获得的最大点数(滑动窗口)

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

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

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

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

示例 1:

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

输入: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
滑动窗口是一种解决数组/字符串子数组或子串问题的有效方法。

当问题设计到子串问题且长度不变时,这时可以用到滑动窗口的想法大大减小代码难度。(就是控制起始位置和结束位置哪)

#include <iostream>
#include <vector>
#include <algorithm>
#include<bits/stdc++.h>using namespace std;int maxScore(vector<int>& cardPoints, int k) {int totalSum = 0;int windowSize = cardPoints.size() - k;int windowSum = 0;int minWindowSum = INT_MAX;for (int i = 0; i < cardPoints.size(); i++) {totalSum += cardPoints[i];}for (int i = 0; i < windowSize; i++) {windowSum += cardPoints[i];}minWindowSum = min(minWindowSum, windowSum);for (int i = windowSize; i < cardPoints.size(); i++) {windowSum = windowSum - cardPoints[i - windowSize] + cardPoints[i];minWindowSum = min(minWindowSum, windowSum);}return totalSum - minWindowSum;
}int main() {int n, k;cin >> n >> k;vector<int> cardPoints(n);for (int i = 0; i < n; i++) {cin >> cardPoints[i];}// 计算最大点数int maxPoints = maxScore(cardPoints, k);cout << maxPoints << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[山东大学操作系统课程设计]实验三

0.写在前面(重点) 由于一些突发事件&#xff0c;导致目前大家手里或多或少都有了完整版的答案了。甚至很多学长学姐们写的代码远比我写的要好很多。 但是这个系列我觉得还是稍微坚持下去一点&#xff0c;或许某些地方可以帮到未来的同学们。 还是那句话&#xff0c;有需要可…

Mybatis使用注解实现复杂动态SQL

系列文章目录 1、mybatis简介及数据库连接池 2、mybatis简单使用 3、mybatis中selectOne的使用 4、mybatis中resultMap结果集的使用 5、mybatis实用教程之XML实现动态sql Mybatis使用注解实现复杂动态SQL 系列文章目录前言一、基础注解二、使用Provider 类实现复杂注解 前言 …

Spring MVC数据绑定的几种方法(一)

这篇文章包含spring mvc的默认数据类型绑定和简单数据类型绑定。内容来自实验。 准备&#xff1a; &#xff08;1&#xff09;在IDEA环境中从archetye创建webapp类型的maven项目exp6。 &#xff08;2&#xff09;在src\main目录下创建并标注java源代码文件夹和resources资源文…

NVIDIA GPU Operator install in kubernetes

文章目录 1. 简介2. Kubernetes 安装3. OS配置4. Docker Engine&#xff0c;cri-dockerd安装5. 安装 kubeadm6. GPU-Operator安装 1. 简介 Kubernetes通过设备插件框架提供对特殊硬件资源的访问&#xff0c;如NVIDIA GPU、⽹卡、Infiniband适配器和其他设备。但是&#xff0c;…

基于Java SSM框架实现实现四六级英语报名系统项目【项目源码+论文说明】

基于java的SSM框架实现四六级英语报名系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个高校四六级报名管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作…

2024美赛数学建模资料---100%获奖资料

很好的教程了 一共二十四章 每一章都是一个模型 并且有matlab编程编码 第一章 线性规划 第二章 整数规划 第三章 非线性规划 第四章 动态规划 第五章 图与网络 第六章 排队论 第七章 对策论 第八章 层次分析法 第九章 插值与拟合 第十章 数据的统计描述和分析 第十一章…

链表算法总结

知识概览 链表包括单链表和双链表&#xff0c;这里讨论算法题中的链表。为了考虑算法题中对于时间效率的要求&#xff0c;链表通常是用数组模拟成静态链表的形式&#xff0c;速度快。 单链表可以用来写邻接表&#xff08;包括n个链表&#xff09;&#xff0c;邻接表可以存储树…

详解Spring对Mybatis等持久化框架的整合

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

自带灯效的气传导耳机,声音当然好听,哈氪聆光体验

现在市场上的蓝牙耳机种类繁多&#xff0c;入耳式的算是主流&#xff0c;但不太适合户外使用 &#xff0c;我平时出门健身、散步的时候&#xff0c;更喜欢用气传导耳机。气传导耳机通常采用挂耳式的设计&#xff0c;耳机不入耳&#xff0c;佩戴舒适度更好&#xff0c;而且稳定性…

Linux安装mongodb数据库(详细)

一、下载安装包 本文使用 tgz 方式,根据服务器类型在官网下载 MongoDB 安装包。官方地址&#xff1a;https://www.mongodb.com/try/download/community 下载方式如图所示&#xff1a; 选择版本 关于 MongoDB 的版本选择&#xff0c;参见如下版本差异&#xff1a; 1、将从官…

Java基本数据类型详解

✨个人主页&#xff1a;全栈程序猿的CSDN博客 &#x1f4a8;系列专栏&#xff1a;Java从入门到精通 ✌座右铭&#xff1a;编码如诗&#xff0c;Bug似流星&#xff0c;持续追求优雅的代码&#xff0c;解决问题如同星辰般自如 Java是一种强类型语言&#xff0c;数据类型在程序中起…

最小生成树(简单讲解,通俗易懂)

什么是树呢&#xff1f; 有三个特点&#xff1a; 无向图&#xff0c;连通&#xff0c;无环 其他性质&#xff1a;树中点的个数总是比边的个数多1&#xff0c;根节点没有父节点&#xff0c;树中节点的度数之和等于其边数。 树&#xff08;tree&#xff09;是一种特殊的图&am…

JS不同运算符下的隐式类型转换

目录 运算符 逻辑运算符&#xff08;&&、||、!&#xff09;和 条件表达式&#xff08;if、三元表达式&#xff09; 逻辑运算符 条件表达式 算数运算符&#xff08;*、/、- %、&#xff09;和 关系运算符&#xff08;>、<、、!&#xff09; 算数运算符 关系…

Python实战:批量加密Excel文件指南

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python实战&#xff1a;批量加密Excel文件指南&#xff0c;全文3800字&#xff0c;阅读大约10分钟。 在日常工作中&#xff0c;保护敏感数据是至关重要的。本文将引导你通过…

栈和队列的OJ题--13.用队列实现栈

13. 用队列实现栈 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; /*解题思路&#xff1a; 此题可以用两个队列去实现一个栈&#xff0c;每次始终保持一个队列为空&#xff0c; 入栈操作相当于给非空队列进行入队操作 出栈操作相当于非空队列的队尾元素出队&…

细说CountDownLatch

CountDownLatch 概念 CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。 CountDownLatch 定义了一个计数器&#xff0c;和一个阻塞队列&#xff0c; 当计数器的值递减为0之前&#xff0c;阻塞队列里面的线程处于挂起状态&#xff0c;当计数器递减到0时…

【学习笔记】机器学习——GAN

提出于2014年。 GAN由两个神经网络组成&#xff1a;一个试图生成看起来与训练数据相似数据的生成器&#xff0c;以及一个试图从虚假数据中分辨出真实数据的判别器。生成器和判别器在训练期间相互竞争。 对抗训练&#xff08;训练竞争性网络&#xff09;是一种重要的机器学习思想…

CMake常用命令指南

前言 本博客是在 CMake 保姆级教程 文章的学习上进行的总结&#xff0c;把常用CMake命令总结如下。 CMake基本命令 CMake 使用 # 进行行注释&#xff0c;使用 #[[ ]] 形式进行块注释。 # 行注释#[[块注释 ]]以下三个命令是使用CMake构建最简单的一个项目所需要的命令。 cm…

工作几年了,你真的懂 Redis 嘛?

大家好&#xff0c;我是伍六七。一个专注于输出 AI 编程内容的在职大厂资深程序员&#xff0c;全国最大 AI 付费社群破局初创合伙人&#xff0c;关注我一起破除 35 诅咒。 Redis 基本上是大部分技术公司都会使用的缓存框架&#xff0c;但是我发现很多程序员其实并不懂 Redis。 …

【数组】-Lc15-三数之和(排序+for循环+滑动窗口)

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个…