1423. 可获得的最大点数 maxScore
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相关推荐
- 1423. 可获得的最大点数
链接:1423. 可获得的最大点数 题解:https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/solut ...
- leetcode 1423. 可获得的最大点数(滑动窗口)
几张卡牌 排成一行,每张卡牌都有一个对应的点数.点数由整数数组 cardPoints 给出. 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌. 你的点数就是你拿到手中的所有 ...
- leetcode总结
目录 1610. 可见点的最大数目 链表 合并链表 148. 排序链表 21. 合并两个有序链表 23. 合并K个升序链表 反转链表 92. 反转链表 II 206. 反转链表 143 ...
- leetcode 滑动窗口
滑动窗口 文章目录 滑动窗口 模板框架 [76. 最小覆盖子串](https://leetcode-cn.com/problems/minimum-window-substring/) 思路分析 代码 ...
- LeetCode一周题解(20220328-20220403)
本周刷的题有选择地写了题解,前半周写了很多二分查找问题和一些其他随机题目(闲来无事),后半周主要集中做顺序表的前缀和类型的题目. #1685 有序数组中差绝对值之和 犯傻了!!没有仔细审题,题目里是本 ...
- 算法前缀和—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], ...
- Python数据结构与算法篇(四)-- 滑动窗口算法
数组和链表代表着计算机最基本的两种存储形式:顺序存储和链式存储,所以他俩可以算是最基本的数据结构.数组是一种基础数据结构,可以用来处理常见的排序和二分搜索问题,典型的处理技巧包括双指针.滑动窗口等,数 ...
- LeetCode题解汇总
题目 推荐指数 1. 两数之和 1 2. 两数相加 1 4. 寻找两个正序数组的中位数 2AAAA 6. Z 字形变换 1 7. 整数反转 2 8. 字符串转换整数 (atoi) 2AAA 9. 回文 ...
- substring数组越界_LeetCode刷题常见问题注意点(持续更新中)
树: 二叉树这种数据结构通常可以用两种方式来处理:递归和层级遍历. 1.递归.在当前节点,分别考虑左子树和右子树如何处理. 由递归,又衍生出DFS. 由DFS,又衍生出回溯. 2.层级遍历. 遍历整棵 ...
最新文章
- linux 窗口z order,wxPython窗口z-order设置
- Nuxt(一) Nuxt初步认识
- 用DataTable.Merge()解决了一个排序问题
- css:hover伪类的使用
- macos实现输入文件输入结束符
- Bootstrap 和 LESS
- 上传文件到阿里云OSS对象存储,查询访问地址,删除文件
- Could not find resource——mybatis 找不到映射器xml文件
- 软件测试周刊(第68期):解决棘手问题的最上乘方法是:静观其变,顺水推舟。
- 计算化学系列教程-第一章-薛定谔方程
- Redis的数据变成backup
- shell插入多行文本
- python3今日头条App电商数据抓取
- 教您使用FPGA来画铅笔画
- python量化分析岗位_量化金融有哪些职位可以选择?
- 破解excel vba程序
- 个人看法(设计思想)
- R语言使用glmnet包拟合lasso-cox回归模型(生存时间和结果标签)、lasso-cox模型进行特征筛选、plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个标准差线
- IMO班聊新版本更给力 企业用车、公费电话上线
- 2012多校联盟第二场1009 还是BFS