1423. 可获得的最大点数

maxScore


一、解题思路

1、解法一( Java )

解法思路:滑动窗口(选定不需要的卡牌作为窗口)

由于剩余卡牌是连续的,使用一个固定长度为 n−k 的滑动窗口对数组 cardPoints 进行遍历,求出滑动窗口最小值,然后用所有卡牌的点数之和减去该最小值,即得到了拿走卡牌点数之和的最大值。

stream(int[] array)

返回顺序 IntStream 与指定的数组作为源。

Interface IntStream 接口下的 sum() 方法

返回此流中元素的总和。

伪代码如下:

/*** @author Listen 1024* @description  1423. 可获得的最大点数 maxScore* @date 2022-03-30 9:14*/
class Solution {public int maxScore(int[] cardPoints, int k) {//sliding window//select unwanted cards as the window//left pointer & right pointerint res = 0, sum = 0;int len = cardPoints.length;int windowSize = len - k;for (int i = 0; i < windowSize; ++i) {sum += cardPoints[i];}res = sum;for (int right = windowSize; right < len; ++right) {sum += cardPoints[right] - cardPoints[right - windowSize];res = Math.min(res, sum);}return Arrays.stream(cardPoints).sum() - res;}
}

2、解法二( Java )

解法思路:滑动窗口
滑动窗口选取指定需要的卡牌

/*** @author Listen 1024* @description  1423. 可获得的最大点数 maxScore* @date 2022-03-30 9:14*/
class Solution{public int maxScore(int[] cardPoints, int k) {//sliding window//select wanted cards as the window//left pointer & right pointerint res = 0, sum = 0;int len = cardPoints.length;for (int i = 0; i < k; ++i) {sum += cardPoints[i];}res = sum;for (int i = 0; i < k; ++i) {sum += cardPoints[len - 1 - i];sum -= cardPoints[k - 1 - i];res = Math.max(res, sum);}return res;}
}

运行结果截图如下:

1423. 可获得的最大点数 maxScore相关推荐

  1. 1423. 可获得的最大点数

    链接:1423. 可获得的最大点数 题解:https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/solut ...

  2. leetcode 1423. 可获得的最大点数(滑动窗口)

    几张卡牌 排成一行,每张卡牌都有一个对应的点数.点数由整数数组 cardPoints 给出. 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌. 你的点数就是你拿到手中的所有 ...

  3. leetcode总结

    目录 1610. 可见点的最大数目 链表 合并链表 148. 排序链表    21. 合并两个有序链表   23. 合并K个升序链表 反转链表  92. 反转链表 II  206. 反转链表  143 ...

  4. leetcode 滑动窗口

    滑动窗口 文章目录 滑动窗口 模板框架 [76. 最小覆盖子串](https://leetcode-cn.com/problems/minimum-window-substring/) 思路分析 代码 ...

  5. LeetCode一周题解(20220328-20220403)

    本周刷的题有选择地写了题解,前半周写了很多二分查找问题和一些其他随机题目(闲来无事),后半周主要集中做顺序表的前缀和类型的题目. #1685 有序数组中差绝对值之和 犯傻了!!没有仔细审题,题目里是本 ...

  6. 算法前缀和—Java版

    前缀和概念 假设有数组 A=[1,2,3,4,5,6,7] 为原数组,有数组 B作为A的前缀和数组,那么B=[1,3,6,10,15,21,28]:可以发现B[i] = A[0]+....+A[i], ...

  7. Python数据结构与算法篇(四)-- 滑动窗口算法

    数组和链表代表着计算机最基本的两种存储形式:顺序存储和链式存储,所以他俩可以算是最基本的数据结构.数组是一种基础数据结构,可以用来处理常见的排序和二分搜索问题,典型的处理技巧包括双指针.滑动窗口等,数 ...

  8. LeetCode题解汇总

    题目 推荐指数 1. 两数之和 1 2. 两数相加 1 4. 寻找两个正序数组的中位数 2AAAA 6. Z 字形变换 1 7. 整数反转 2 8. 字符串转换整数 (atoi) 2AAA 9. 回文 ...

  9. substring数组越界_LeetCode刷题常见问题注意点(持续更新中)

    树: 二叉树这种数据结构通常可以用两种方式来处理:递归和层级遍历. 1.递归.在当前节点,分别考虑左子树和右子树如何处理. 由递归,又衍生出DFS. 由DFS,又衍生出回溯. 2.层级遍历. 遍历整棵 ...

最新文章

  1. linux 窗口z order,wxPython窗口z-order设置
  2. Nuxt(一) Nuxt初步认识
  3. 用DataTable.Merge()解决了一个排序问题
  4. css:hover伪类的使用
  5. macos实现输入文件输入结束符
  6. Bootstrap 和 LESS
  7. 上传文件到阿里云OSS对象存储,查询访问地址,删除文件
  8. Could not find resource——mybatis 找不到映射器xml文件
  9. 软件测试周刊(第68期):解决棘手问题的最上乘方法是:静观其变,顺水推舟。
  10. 计算化学系列教程-第一章-薛定谔方程
  11. Redis的数据变成backup
  12. shell插入多行文本
  13. python3今日头条App电商数据抓取
  14. 教您使用FPGA来画铅笔画
  15. python量化分析岗位_量化金融有哪些职位可以选择?
  16. 破解excel vba程序
  17. 个人看法(设计思想)
  18. R语言使用glmnet包拟合lasso-cox回归模型(生存时间和结果标签)、lasso-cox模型进行特征筛选、plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个标准差线
  19. IMO班聊新版本更给力 企业用车、公费电话上线
  20. 2012多校联盟第二场1009 还是BFS

热门文章

  1. 微信小程序开发拼图小游戏
  2. Linux安装Phantomjs
  3. curl wget 不验证证书进行https请求
  4. Adobe Pro DC 2022 软件详细安装教程
  5. 蓝牙模块 hc06 linux,HC-06蓝牙模块设置和使用方法
  6. CultureInfo 类
  7. [Angular2]eclipse中angular2开发环境的搭建
  8. 专科论文查重率要求多少?
  9. 搭建Android开发环境Win7-64位
  10. C++ 并发指南 std::mutex