当前位置: 首页 > news >正文

前缀和 LeetCode1423. 可获得的最大点数

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

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

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

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

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

 

假设前面拿i张,后面则拿k-i张。

如果正常写需要写两个for循环,分别求前面的点数和、后面的点数和。超时。

所以可用用前缀和和后缀和来预处理。

pre[i]表示第1~第i个数的和。

post[i]表示第i~第n个数的和。

所以 结果 = max pre[i] + post[ n-(k-i-1)]

class Solution {
public:int maxScore(vector<int>& cardPoints, int k) {int n = cardPoints.size();vector<int>pre(n+1,0);vector<int>post(n+2,0);for(int i=0;i<n;i++){pre[i+1]=pre[i]+cardPoints[i];}for(int i=n-1;i>=0;i--){post[i+1]=post[i+2]+cardPoints[i];}int res=0;for(int i=0;i<=k;i++){res=max(res,pre[i]+post[n-k+i+1]);}return res;}
};

http://www.lryc.cn/news/251308.html

相关文章:

  • 探索意义的深度:自然语言处理中的语义相似性
  • WT2605-24SS高品质录音语音芯片:实时输出、不保存本地,引领音频技术新潮流
  • Git 合并冲突解决步骤
  • Windows核心编程 注册表
  • 【算法专题】二分查找
  • 中国消费电子行业发展趋势及消费者需求洞察|徐礼昭
  • UE学习C++(1)创建actor
  • 【CTA认证】Android8实现android6以下的应用运行时也要申请权限
  • gRPC Java、Go、PHP使用例子
  • 前端知识笔记(十九)———px,em,rem,vw,vh之间的区别
  • docker部署frp穿透内网
  • 使用pytorch从零开始实现迷你GPT
  • tp6框架 万级数据入库 php函数优化
  • TwinCAT3一个PLC设备里多个程序工程之间通讯
  • python弹球小游戏
  • mongoose学习记录
  • 边缘与云或边缘加云:前进的方向是什么?
  • 蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解
  • 力扣题:字符串的反转-11.23
  • 【软件测试】盘一盘工作中遇到的 Redis 异常测试
  • 14.Oracle中RegExp_Like 正则表达式基本用法
  • Docker Swarm总结+Jenkins安装配置与集成(5/5)
  • docker安装Sentinel zipkin
  • 利用python实现文件压缩打包的功能
  • 如何创建百科?建立百科词条的意义何在?九问百科营销
  • Django如何设置时区为北京时间?
  • Basemap地图绘制_Python数据分析与可视化
  • C#编程题分享(5)
  • 群晖Video Station 添加海报墙-新方法
  • 【MODBUS】Modbus协议入门简介