2023-07-11力扣每日一题

链接:

https://leetcode.cn/problems/maximum-alternating-subsequence-sum/

题意:

给定一个数组,求一个子序列,使这个子序列的奇数位和-偶数位和最大(下标从1开始的话|反正第一个数是+)

解:

找下坡,曲折处两个分下坡大于一个总下坡(如图)

在这里插入图片描述

实际代码:

思维:

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
typedef long long int ll;
const int Nmax=1E5+7;
long long maxAlternatingSum(vector<int>& nums)
{ll ans=0;bool zt=1;int temp=nums[0];for(int i=1;i<nums.size();i++){if(zt && nums[i]<nums[i-1]) zt=0;if(!zt && nums[i]>nums[i-1]){ans+=temp-nums[i-1];zt=1;temp=nums[i];}temp=max(temp,nums[i]);}return ans+temp;
}
int main()
{vector<int> nums;int n;cin>>n;for(int f=1;f<=n;f++){int temp;cin>>temp;nums.push_back(temp);}ll ans=maxAlternatingSum(nums);cout<<ans<<endl;
}

DP?:

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
typedef long long int ll;
const int Nmax=1E5+7;
long long maxAlternatingSum(vector<int>& nums)
{ll A1=0,A2=0;//最后一位+ 最后一位- int lg=nums.size();for(int i=0;i<lg;i++){A1=max(A2+nums[i],A1);if(i!=0) A2=max(A1-nums[i],A2); }return max(A1,A2);
}
int main()
{vector<int> nums;int n;cin>>n;for(int f=1;f<=n;f++){int temp;cin>>temp;nums.push_back(temp);}ll ans=maxAlternatingSum(nums);cout<<ans<<endl;
}

限制:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/21533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抽象的计算机模型——图灵机之一发入魂

图灵机由英国数学家和计算机科学家阿兰图灵&#xff08;Alan Turing&#xff09;于1936年提出。它是一种抽象的计算设备&#xff0c;是一种理论上的计算模型&#xff0c;用于描述和模拟计算的过程&#xff0c;至于为什么要做计算可参考我另外一篇文章。可以说&#xff0c;图灵机…

什么是vlan为什么要划分vlan

首先了解交换机的数据的转发方式。&#xff0c;有两种情况会使用广播方式进行数据分发&#xff0c;第一种就是目的地址是全F的&#xff08;FF-FF-FF-FF-FF-FF&#xff09;&#xff0c;第二种是位置的单播帧&#xff0c;这样的情况下会带来什么杨的问题呢。 场景引入&#xff1…

GitLab CICD Day 08 - 环境变量

1.局部/全局环境变量 stages:- testing # stage编排- build- deployvariables:global_var: "全部变量" #全部变量build_image:stage: buildvariables: #局部环境变量my_name: "局部环境变量" tags:- shell script:- …

JavaScript--事件处理高级应用

1、什么是事件 指在特定条件下触发的操作或响应。事件可以是用户与网页交互时引起的动作&#xff0c;例如点击按钮、提交表单、鼠标移动等&#xff0c;也可以是由浏览器或其他代码触发的动作&#xff0c;如页面加载完成、时间到达等。 我们可以通过添加事件处理程序来响应各种…

tomcat学习随笔

Tomcat结构与原理 一、组成ServerServiceConnectorProtocolHandlerEndpointProcessor Adaptor ContainerEngineHostContextWrapper 运行热部署jsp类war tomcat根路径目录结构示意图 一、组成 tomcat结构debug示意图 Server tomcat的实例&#xff0c;支持多个Service Service …

Python(八)字符编码

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

【youcans动手学模型】目标检测之 OverFeat 模型

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】目标检测之 OverFeat 模型 1. OverFeat 卷积神经网络模型1.1 论文摘要1.2 技术背景1.3 基本方法模型设计多尺度分类滑动窗口&#xff08;Sliding window&#xff09;定位&#…

RabbitMQ高阶使用

1. 问题 2. 延时任务 2.1 什么是延时任务 在当前时间往后延迟多少时间执行的任务 2.1.1 和定时任务区别 定时任务有明确的触发时间&#xff0c;延时任务没有定时任务有执行周期&#xff0c;而延时任务在某事件触发后一段时间内执行&#xff0c;没有执行周期定时任务一般执行的…

二、RocketMQ消息存储源码分析

RocketMQ源码深入剖析 6 Broker源码分析 Broker模块涉及到的内容非常多&#xff0c;本课程重点讲解以下技术点&#xff1a; 1、Broker启动流程分析 2、消息存储设计 3、消息写入流程 4、亮点分析&#xff1a;NRS与NRC的功能号设计 5、亮点分析&#xff1a;同步双写数倍性…

洛谷P1059 [NOIP2006 普及组] 明明的随机数

(一)Question 1. 问题描述 2. Input 输入有两行,第 1 行为 1 个正整数,表示所生成的随机数的个数 N。第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。 3. Output 输出也是两行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。第 2 行为 M 个用空格隔开的正…

“简单易懂的排序:深入了解直接选择排序“

文章目录 &#x1f50d; 选择排序的原理与过程&#x1f4c8; 选择排序的优缺点&#x1f449; 代码实现 &#x1f50d; 选择排序的原理与过程 本文我们直接说一个优化过的直接选择排序。其思路大同小异. 选择排序的思路很简单 每次从待排序的数据中选择一个最小和最大的元素&a…

fatal: unable to access ‘http://xxxx‘: Empty reply from server

当你遇到 “fatal: unable to access ‘http://xxxx’: Empty reply from server” 的错误信息时&#xff0c;通常表示 Git 客户端无法连接到指定的服务器或仓库。 以下是一些可能导致该错误的原因以及一些排除故障的步骤&#xff1a; 错误的 URL&#xff1a;确保你提供的 URL…