zoukankan      html  css  js  c++  java
  • 1423. 可获得的最大点数

    从起点开始k个数的sum记为sum1,从终点开始k个数的sum记为sum2

    如果sum1 > sum2,则说明相应长度取左边价值会更大,取完之后sum1 - 当前“起点”,sum2 - 当前“终点”

    否则,取右边,sum1 - 当前“终点”,sum2 - 当前“起点”

    相等时无所谓

    class Solution {
    public:
        int maxScore(vector<int>& cardPoints, int k) {
            int sum1 = 0, sum2 = 0;
            int p = 0, q = cardPoints.size() - 1;
            int len = cardPoints.size();
            for(int i = 0; i < len && i < k; i++)
            {
                sum1 += cardPoints[i];
                sum2 += cardPoints[len - i - 1];
            }
            int ret = 0;
            int k1 = k, k2 = k;
            while(k)
            {
                if(sum1 >= sum2)
                {
                    ret += cardPoints[p];
                    sum1 -= cardPoints[p];
                    sum2 -= cardPoints[len - k2];
                    k2--;
                    p++;
                }
                else
                {
                    ret += cardPoints[q];
                    sum2 -= cardPoints[q];
                    sum1 -= cardPoints[k1 - 1];
                    k1--;
                    q--;
                }
    
                k--;
            }
            return ret;
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    (转)Python中的__init__和__new__
    PEP8
    python lstrip()函数
    python中的生成器跟迭代器
    callback
    关于0.0.0.0这个ip的疑问
    Python import中相对路径的问题
    python读取excel
    git本地管理多个密钥/账户
    词法分析之有确定、不确定自动机及其生成器
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15440381.html
Copyright © 2011-2022 走看看