1423. 可获得的最大点数 --力扣 --JAVA

简介: 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。

 题目

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

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

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

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

解题思路

    1. 先从一边获取所有卡片;
    2. 逐个替换成另一侧的卡片;
    3. 每次替换后比较大小选择最大值;

    代码展示

    class Solution {
        public int maxScore(int[] cardPoints, int k) {
            int ans = 0;
            //先全部从左边取值
            for (int i = 0; i < k; i++){
                ans += cardPoints[i];
            }
            int n = cardPoints.length;
            int index = 1;
            int temp = ans;
            while (index <= k){
                //逐个替换成右边值再比较
                temp = temp - cardPoints[k - index] + cardPoints[n - index];
                ans = Math.max(ans, temp);
                index++;
            }
            return ans;
        }
    }

    image.gif


    目录
    相关文章
    |
    1月前
    |
    算法 Java
    [Java·算法·简单] LeetCode 9. 回文数 详细解读
    [Java·算法·简单] LeetCode 9. 回文数 详细解读
    21 0
    |
    1月前
    |
    Java
    383. 赎金信 --力扣 --JAVA
    给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能c里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。
    22 1
    |
    6天前
    |
    Java
    LeetCode题解-逆波兰表达式求值-Java
    逆波兰表达式求值-Java
    6 0
    |
    6天前
    |
    Java
    |
    6天前
    |
    Java
    |
    6天前
    |
    Java
    LeetCode题解-二叉搜索树中第K小的元素-Java
    LeetCode题解-二叉搜索树中第K小的元素-Java
    6 0
    |
    6天前
    |
    Java
    |
    6天前
    |
    Java
    LeetCode题解- 两两交换链表中的节点-Java
    两两交换链表中的节点-Java
    7 0
    |
    6天前
    |
    Java
    LeetCode题解-合并K个有序数组-Java
    合并K个有序数组-Java
    5 0
    |
    6天前
    |
    Java

    相关产品

  1. 云迁移中心