​LeetCode解法汇总1911. 最大子序列交替和

这篇具有很好参考价值的文章主要介绍了​LeetCode解法汇总1911. 最大子序列交替和。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣

描述:

一个下标从 0 开始的数组的 交替和 定义为 偶数 下标处元素之  减去 奇数 下标处元素之  。

  • 比方说,数组 [4,2,5,3] 的交替和为 (4 + 5) - (2 + 3) = 4 。

给你一个数组 nums ,请你返回 nums 中任意子序列的 最大交替和 (子序列的下标 重新 从 0 开始编号)。

一个数组的 子序列 是从原数组中删除一些元素后(也可能一个也不删除)剩余元素不改变顺序组成的数组。比方说,[2,7,4] 是 [4,2,3,7,2,1,4] 的一个子序列(加粗元素),但是 [2,4,2] 不是。

示例 1:

输入:nums = [4,2,5,3]
输出:7
解释:最优子序列为 [4,2,5] ,交替和为 (4 + 5) - 2 = 7 。

示例 2:

输入:nums = [5,6,7,8]
输出:8
解释:最优子序列为 [8] ,交替和为 8 。

示例 3:

输入:nums = [6,2,1,2,4,5]
输出:10
解释:最优子序列为 [6,1,5] ,交替和为 (6 + 5) - 1 = 10 。

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105

解题思路:

/**

* 1911. 最大子序列交替和

* 解题思路:

* 因为这道题可以任意的删,所以我们可以依次的去算。

* 比如6,2,1,2,4,5的数组,

* 6是偶数位,并且6大于2,所以我们可以求值的集合中加入6,然后继续拿2比较,集合中最后一位变成了奇数位。

* 2是奇数位,并且2大于1,如果选择2和1,其结果就是-1,所以此时就不选2,抛掉2,直接选择1,集合中最后一位仍是了奇数位。

* 1是奇数位,并且1小于2,如果选择1和2,则结果是正数,所以此时就可以选择1,把1加入集合,集合中最后一位变成了偶数位。

* 继续这样循环下去

*/文章来源地址https://www.toymoban.com/news/detail-550584.html

代码:

class Solution1911
{
public:
    long long maxAlternatingSum(vector<int> &nums)
    {
        nums.push_back(0);
        long long sum = 0;
        int currentIndex = 0;
        long long currentValue = nums[0];
        for (int i = 1; i < nums.size(); i++)
        {
            if (currentIndex % 2 == 0)
            {
                if (currentValue > nums[i])
                {
                    sum += currentValue;
                    currentValue = nums[i];
                    currentIndex++;
                }
                else
                {
                    currentValue = nums[i];
                }
                continue;
            }
            if (currentValue > nums[i])
            {
                currentValue = nums[i];
            }
            else
            {
                sum -= currentValue;
                currentValue = nums[i];
                currentIndex++;
            }
        }
        return sum;
    }
};

到了这里,关于​LeetCode解法汇总1911. 最大子序列交替和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ​LeetCode解法汇总2496. 数组中字符串的最大值

    https://github.com/September26/java-algorithms 一个由字母和数字组成的字符串的  值  定义如下: 如果字符串  只  包含数字,那么值为该字符串在  10  进制下的所表示的数字。 否则,值为字符串的  长度  。 给你一个字符串数组  strs  ,每个字符串都只由字母和数字组成,请你

    2024年02月10日
    浏览(107)
  • leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和)

    目录 1、轮转数组 2、买卖股票的最佳时机 3、买卖股票的最佳时机② 4、跳跃游戏 5、跳跃游戏2 6、最大子序列交替和 7、交替数字和 8、下降路径最小和 1、轮转数组 2、买卖股票的最佳时机 3、买卖股票的最佳时机② 4、跳跃游戏 5、跳跃游戏2 6、最大子序列交替和 7、交替数

    2024年02月16日
    浏览(32)
  • ​LeetCode解法汇总106. 从中序与后序遍历序列构造二叉树

    https://github.com/September26/java-algorithms 给定两个整数数组  inorder  和  postorder  ,其中  inorder  是二叉树的中序遍历,  postorder  是同一棵树的后序遍历,请你构造并返回这颗  二叉树  。 示例 1: 示例 2: 提示: 1 = inorder.length = 3000 postorder.length == inorder.length -3000 = inorder[i], pos

    2024年02月22日
    浏览(39)
  • 【算法题解】23. 「滑动窗口最大值」单调队列解法

    这是一道 困难 题 题目来自:https://leetcode.cn/problems/sliding-window-maximum/ 给你一个整数数组 nums ,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 示

    2023年04月11日
    浏览(54)
  • ​LeetCode解法汇总2490. 回环句

    https://github.com/September26/java-algorithms 力扣 句子  是由单个空格分隔的一组单词,且不含前导或尾随空格。 例如, \\\"Hello World\\\" 、 \\\"HELLO\\\" 、 \\\"hello world hello world\\\"  都是符合要求的句子。 单词  仅  由大写和小写英文字母组成。且大写和小写字母会视作不同字符。 如果句子满足下

    2024年02月12日
    浏览(43)
  • ​LeetCode解法汇总LCP 50. 宝石补给

    GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCode,lintCode等网站题目的解法和代码,以及完整的mode类,甚至链表代码生成工具都有提供。 欢迎各位勇者来到力扣新手村,在开始试炼之前,请各位勇者先进行「宝石补给」。 每位勇者初始都拥有一些能量宝石, 

    2024年02月07日
    浏览(41)
  • ​LeetCode解法汇总2865. 美丽塔 I

    https://github.com/September26/java-algorithms 给你一个长度为  n  下标从  0  开始的整数数组  maxHeights  。 你的任务是在坐标轴上建  n  座塔。第  i  座塔的下标为  i  ,高度为  heights[i]  。 如果以下条件满足,我们称这些塔是  美丽  的: 1 = heights[i] = maxHeights[i] heights  是一

    2024年01月25日
    浏览(50)
  • ​LeetCode解法汇总344. 反转字符串

    https://github.com/September26/java-algorithms 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组  s  的形式给出。 不要给另外的数组分配额外的空间,你必须 原地修改输入数组 、使用 O(1) 的额外空间解决这一问题。 示例 1: 示例 2: 提示: 1 = s.length = 105

    2024年02月14日
    浏览(50)
  • ​LeetCode解法汇总2679. 矩阵中的和

    https://github.com/September26/java-algorithms 给你一个下标从  0  开始的二维整数数组  nums  。一开始你的分数为  0  。你需要执行以下操作直到矩阵变为空: 矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。 在步骤 1 删除的所有数字

    2024年02月16日
    浏览(42)
  • ​LeetCode解法汇总1177. 构建回文串检测

    https://github.com/September26/java-algorithms 给你一个字符串  s ,请你对  s  的子串进行检测。 每次检测,待检子串都可以表示为  queries[i] = [left, right, k] 。我们可以  重新排列  子串  s[left], ..., s[right] ,并从中选择  最多   k  项替换成任何小写英文字母。  如果在上述检测过程

    2024年02月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包