题解 | #不能连续吃草的牛II#

不能连续吃草的牛II

https://www.nowcoder.com/practice/0b6e9ca056eb4166b4bfd4f7c90b2c61

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    
    int eatGrass(vector<int>& nums) {
        // write code here
        if (nums.size() == 1) return nums[0];
        if (nums.size() == 2) return max(nums[0], nums[1]);
        vector<int> dp(nums.size());
        int ansMax = 0;
        // 第一个位置吃,最后一个位置不吃
        dp[0] = nums[0];
        dp[1] = max(dp[0], nums[1]);   // 这里需要注意,第一个位置吃不吃影响的是遍历的后面的位置
        // dp表示的是当前可以获得的最大的饱腹感,如果为[1, 3, 4,..], 那么dp[1]就为3,此时就表示吃第二个位置
        // 不吃第一个位置
        for (int i = 2; i < nums.size()-1; i++) {
            dp[i] = max(dp[i-1], dp[i-2]+nums[i]);
        }
        // 不吃第一个位置
        vector<int> dp1(nums.size());
        dp1[0] = 0;
        dp1[1] = nums[1];
        for (int i = 2; i < nums.size(); i++) {
            dp1[i] = max(dp1[i-1], dp1[i-2]+nums[i]);
        }

        return max(dp[nums.size()-2], dp1[nums.size()-1]);
    }
};

全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务