LeetCode 376. 摆动序列(贪心 动态规划)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 贪心
      • 2.2 动态规划

1. 题目

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。

例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。

给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序。

示例 1:
输入: [1,7,4,9,2,5]
输出: 6 
解释: 整个序列均为摆动序列。示例 2:
输入: [1,17,5,10,13,15,10,5,16,8]
输出: 7
解释: 这个序列包含几个长度为 7 摆动序列,其中一个可为[1,17,10,13,10,16,8]。示例 3:
输入: [1,2,3,4,5,6,7,8,9]
输出: 2进阶:
你能否用 O(n) 时间复杂度完成此题?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/wiggle-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 280. 摆动排序
LeetCode 324. 摆动排序 II

2.1 贪心

去除相邻的相等的数
考虑 i−1,i,i+1i-1,i,i+1i1,i,i+1 连续的三个数,如果 n[i−1]<n[i]&n[i]>n[i+1]n[i-1]<n[i] \quad \& \quad n[i] >n[i+1]n[i1]<n[i]&n[i]>n[i+1] 或者
n[i−1]>n[i]&n[i]<n[i+1]n[i-1]>n[i] \quad \& \quad n[i] <n[i+1]n[i1]>n[i]&n[i]<n[i+1] 则摆动序列长度+1

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {nums.erase(unique(nums.begin(), nums.end()), nums.end());//去除相邻的相等的if(nums.size() < 2)return nums.size();int a, b, c, i, len = 2;for(i = 1; i < nums.size()-1; ++i){a = nums[i-1];b = nums[i];c = nums[i+1];if(a<b && b>c)++len;else if(a>b && b<c)++len;}return len;}
};

在这里插入图片描述

2.2 动态规划

up表示到当前数为止是上升的摆动数列长度;
down表示到当前数为止是下降的摆动数列长度;

if(nums[i] > nums[i-1])up = down+1;
else if(nums[i] < nums[i-1])down = up+1;
class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if(nums.size() < 2)return nums.size();int up=1, down=1, i;for(i = 1; i < nums.size(); ++i){if(nums[i] > nums[i-1])up = down+1;else if(nums[i] < nums[i-1])down = up+1;}return max(up,down);}
};

在这里插入图片描述

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

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

相关文章

Spring Cloud实战小贴士:Zuul的饥饿加载(eager-load)使用

上一篇我们介绍了如何使用Ribbon的earger-load配置加速Spring Cloud中对服务接口的第一次调用。可是这样只是解决了内部服务间的调用&#xff0c;另外一个问题依然经常困扰我们&#xff0c;那就是网关到内部服务的访问。由于Spring Cloud Zuul的路由转发也是通过Ribbon实现负载…

论文浅尝 | ESimCSE:无监督句子表示对比学习的增强样本构建方法

笔记整理&#xff1a;高超尘&#xff0c;中国科学院信息工程研究所硕士动机对比学习在学习无监督句向量方面引起了广泛的关注。其中最受关注的无监督方法是unsup-SimCSE&#xff08;Gao et al., EMNLP 2021)。Unsup-SimCSE使用Dropout作为数据增强方法&#xff0c;将相同的输入…

一份北大信科内部流传的 “CS 自救指南”

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

LeetCode 678. 有效的括号字符串(栈)

1. 题目 给定一个只包含三种字符的字符串&#xff1a;&#xff08; &#xff0c;&#xff09; 和 *&#xff0c;写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则&#xff1a; 任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应的左括号 ( 。…

Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式

我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候&#xff0c;如果我们的机器或网络环境等原因不是很好的话&#xff0c;有时候会发现这样一个问题&#xff1a;我们服务消费方调用服务提供方接口的时候&#xff0c;第一次请求经常会超时&#xff0c;而之后的调用就没…

图谱实战 | 图谱问答在小米小爱中的实践探索

转载公众号 | DataFunTalk分享嘉宾&#xff1a;代文博士 小米 高级算法工程师编辑整理&#xff1a;何雨婷 湖北工业大学出品平台&#xff1a;DataFunTalk导读&#xff1a;今天的介绍会围绕以下三点展开&#xff1a;小爱同学应用场景信息抽取图谱问答01小爱同学应用场景介绍首先…

稀疏大模型简述:从MoE、Sparse Attention到GLaM

文 | 唐工源 | 知乎Sparsity, ..., is another important algorithmic advance that can greatly improve efficiency. 稀疏性&#xff0c;是&#xff08;神经架构搜索&#xff09;之外另一个重要的算法进步&#xff0c;可以大大提高效率。The use of sparsity in models is .…

LeetCode 777. 在LR字符串中交换相邻字符(双指针)

1. 题目 在一个由 ‘L’ , ‘R’ 和 ‘X’ 三个字符组成的字符串&#xff08;例如"RXXLRXRXL"&#xff09;中进行移动操作。一次移动操作指用一个"LX"替换一个"XL"&#xff0c;或者用一个"XR"替换一个"RX"。现给定起始字符…

Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】

在前两篇文章&#xff1a;服务网关&#xff08;基础&#xff09;、服务网关&#xff08;路由配置&#xff09;中&#xff0c;我们了解了Spring Cloud Zuul作为网关所具备的最基本功能&#xff1a;路由。本文我们将具体介绍一下Spring Cloud Zuul的另一项核心功能&#xff1a;过…

图谱实战 | 美团基于知识图谱的个性化新闻推荐系统

转载公众号 | DataFunTalk分享嘉宾&#xff1a;刘丹阳博士 美团 实习生编辑整理&#xff1a;毛佳豪 中国平安浙江分公司(实习)出品平台&#xff1a;DataFunTalk导读&#xff1a;新闻阅读是人们日常生活中必不可少的活动&#xff0c;随着新闻逐渐从纸质端转变到电子端&#xff0…

为了养成NLP卷王,我画了一张路线图

又到了一年一度的校招季&#xff0c;与往年不同&#xff0c;受各种事件综合作用的影响&#xff0c;今年的校招季让很多应届生感到额外的寒冷和不安。但换个角度来说&#xff0c;企业主每年都会嚷嚷着算法岗人才供不应求。当然这里不是说应聘的人不够多&#xff0c;而是能过及格…

LeetCode 870. 优势洗牌(贪心 二分查找)

1. 题目 给定两个大小相等的数组 A 和 B&#xff0c;A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。 返回 A 的任意排列&#xff0c;使其相对于 B 的优势最大化。 示例 1&#xff1a; 输入&#xff1a;A [2,7,11,15], B [1,10,4,11] 输出&#xff1…

Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

在上一篇《Spring Cloud构建微服务架构&#xff1a;服务网关&#xff08;基础&#xff09;》一文中&#xff0c;我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务&#xff0c;同时也演示了Spring Cloud Zuul基于服务的自动路由功能。在本文中&#xff0c;我们将进一步…

技术动态 | Neo4j知识图谱的技术解析及案例分享

转载公众号 | DataFunTalk 合作分享&#xff1a;Jesus Barrasa-Neo4j-欧洲区售前和技术总监合作分享&#xff1a;丁可-Neo4j-亚太区高级技术顾问编辑整理&#xff1a;吴祺尧-加州大学圣地亚哥分校出品平台&#xff1a;DataFunTalk导读&#xff1a;Neo4j近年来与众多公司合作&am…

哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...

近期有很多小伙伴在公众号后台咨询有没有关于Pytorch函数使用的学习资料。Pytorch是目前常用的深度学习框架之一&#xff0c;深受学生党的喜爱&#xff0c;小白本人也是使用的Pytorch框架。为了帮助更多小伙伴&#xff0c;小白学视觉团队整理了这份目前最全的Pytorch常用函数手…

LeetCode 984. 不含 AAA 或 BBB 的字符串(贪心)

1. 题目 给定两个整数 A 和 B&#xff0c;返回任意字符串 S&#xff0c;要求满足&#xff1a; S 的长度为 A B&#xff0c;且正好包含 A 个 ‘a’ 字母与 B 个 ‘b’ 字母&#xff1b;子串 ‘aaa’ 没有出现在 S 中&#xff1b;子串 ‘bbb’ 没有出现在 S 中。 示例 1&…

Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】

通过之前几篇Spring Cloud中几个核心组件的介绍&#xff0c;我们已经可以构建一个简略的&#xff08;不够完善&#xff09;微服务架构了。比如下图所示&#xff1a; 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现&#xff1b;而服务间通过Ribbo…

论文浅尝 | PASSLEAF:基于样本池的不确定性知识图谱嵌入半监督学习框架

笔记整理&#xff1a;陈一林&#xff0c;东南大学硕士&#xff0c;研究方向为不确定性知识图谱规则与推理。论文引用&#xff1a;Citation: Chen, Z.M., Yeh, M.Y. and Kuo, T.W., 2021, May. PASSLEAF: A Pool-bAsed Semi-Supervised LEArning Framework for Uncertain Knowle…

扔掉老破V100、A100,英伟达新一代计算卡H100来了

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

LeetCode 725. 分隔链表

1. 题目 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1&#xff0c;也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出&#xff0c;并且排在前面的…