leetcode 376. 摆动序列

news2024/12/28 20:06:41

思路没想到就很难,,,,,,看了题解就觉得,还可以

加个图吧,贪心这玩意。。

 

我之前的困惑就在于:

不知道如何判断 正负规律,发现我双指针的思想用错了。

我一开始想用两个指针指向 数组的元素

这里的两个指针指向的是差值。

注意:

判断的条件 为什么  pre 可以 == 0 ?

考虑到会有平坡,之后 diff 又会改变的情况

 

pre 只在有变动的时候才改变

 为什么呢?

如果跟着 diff 移动,那么 “ 2 ”,就会被记录下来,但 2 不是我们想要的值。

 

 

我的和题解不太一样。因为我觉得题解不太好理解

我的方法:

1. 判断 数组大小为 1 的时候

2. 判断 数组大小为 2 的时候

3. 循环判断 数组大小 > 2 的时候

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {

        // 先特判 size == 1
        int i = 0;
        int count;
        if(nums.size() == 1)
            return 1;        

        // size == 2    
        int pre = nums[1] - nums[0];        
        if(pre == 0)
            count = 1;
        else
            count = 2;
        
        for(int i = 2; i <nums.size(); i++)
        {
            int diff = nums[i] - nums[i - 1];
            if((diff > 0 && pre <= 0) || (diff < 0 && pre >= 0))
            {
                count++;
                pre = diff;   // 只在有变动的时候改变
            }                
        }

        return count;      
    }
};

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

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

相关文章

react-7 组件库 Ant Design

1.安装组件库 npm install --save antd-mobile 常用组件 tabbar 底部导航 Swiper 轮播图&#xff08;走马灯&#xff09; NavBar&#xff08;顶部返回累&#xff09; 配合 Dialog&#xff0c;Toast InfiniteScroll 无限滚动&#xff08;实现下拉刷新&#xff09; Skeleto…

沃顿商学院6个最受欢迎的工商管理课程

沃顿商学院创立于1881年&#xff0c;是美国第一所大学商学院。它的故事开始于企业家约瑟夫沃顿&#xff08;Joseph Wharton&#xff09;&#xff0c;他出生于一个费城富有的商业家庭&#xff0c;通过经营佰利恒钢铁公司和美国镍公司积累了大量的财富。在1881年他55岁时&#xf…

借由Net5.5G,看到运营商的新沧海

我们都记得这样一句诗&#xff1a;“东临碣石&#xff0c;以观沧海”。 想要看到沧海的壮阔波澜&#xff0c;就先要抵达碣石山这样可以看到大海的地方。在数字化的发展过程中&#xff0c;往往一个技术或产业趋势就是一座碣石山&#xff0c;借由它可以看到描绘着未来机遇的新沧海…

pandas笔记:tseries.offset

进行date的偏移 1 各种offset 1.1 DateOffset 1.1.1 基本使用方法 class pandas.tseries.offsets.DateOffset n 偏移量表示的时间段数。 如果没有指定时间模式&#xff0c;则默认为n天。 normalize是否将DateOffset偏移的结果向下舍入到前一天午夜**kwds 添加到偏移量的时…

ROS学习第十节——参数服务器

前言&#xff1a;本小节主要是对于参数服务器参数的修改&#xff0c;需要掌握操作参数的函数使用 1.基本介绍 参数服务器实现是最为简单的&#xff0c;该模型如下图所示,该模型中涉及到三个角色: ROS Master (管理者)Talker (参数设置者)Listener (参数调用者) ROS Master …

Bootstrap02 家居商城首页之最新上架热门家具分类页面

目录 案例1&#xff1a;首页最新上架&热门家居实现 案例2&#xff1a;分类页面搜索区域Bootstrap实现&栅格框架搭建 案例3&#xff1a;分类页面分类列表实现&整合 案例1&#xff1a;首页最新上架&热门家居实现 ①.页面内容&#xff1a;画像 Figure ②.组件…

C learning_7

目录 1.for循环 1.虽然while循环和for循环本质上都可以实现循环&#xff0c;但是它们在使用方法和场合上还是有一些区别的。 2.while循环中存在循环的三个必须条件&#xff0c;但是由于风格的问题使得三个部分很可能偏离较远&#xff0c;这样 查找修改就不够集中和方便。所以…

Vue2-黑马(十四)

目录&#xff1a; &#xff08;1&#xff09;实战-crud &#xff08;2&#xff09;实战--crud查询和删除 &#xff08;3&#xff09; 实战-crud-修改 &#xff08;1&#xff09;实战-crud 服务端的接口&#xff1a; 前端需要修改的地方&#xff1a;业务简单的一半需要改3个…

Vue 组件

文章目录 Vue 组件全局组件局部组件Prop动态 PropProp 验证 自定义事件 Vue 组件 组件&#xff08;Component&#xff09;是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素&#xff0c;封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用&#x…

Go程序开发快速入门

当进行Go程序开发时&#xff0c;需要注意以下几点&#xff1a; 1、代码可读性&#xff1a;尽可能使用有意义的变量名和注释&#xff0c;确保代码易于理解和维护。 2、错误处理&#xff1a;Go语言有很好的错误处理机制&#xff0c;应该合理地处理错误&#xff0c;以便于排除错…

【运动规划算法项目实战】路径规划中常用的插值方法

文章目录 简介一、线性插值代码实现二、三次样条插值三、B样条插值四、贝塞尔曲线插值总结简介 常见用于处理路径平滑的插值算法主要包括线性插值、三次样条插值、B样条插值和贝塞尔曲线插值等,下面分别介绍它们的优缺点和使用场景。 一、线性插值 线性插值是最简单的插值方…

ROS——Teb算法的优化

一、简介 “TEB”全称Time Elastic Band&#xff08;时间弹性带&#xff09;Local Planner&#xff0c;该方法针对全局路径规划器生成的初始轨迹进行后续修正(modification)&#xff0c;从而优化机器人的运动轨迹&#xff0c;属于局部路径规划。 关于eletic band&#xff08;橡…

Java 依赖注入(DI)

只要做过 Java 一段时间&#xff0c;基本上都会遇到这个问题。 Dependency Injection &#xff08;DI&#xff09;中文称之为依赖注入。 都说了 Spring 的关键部分就是 Dependency Injection &#xff08;DI&#xff09;&#xff0c;但是什么是依赖&#xff0c;为什么要注入&…

AirServer2023最新免费苹果电脑投屏工具

AirServer是一个Mac专用投屏工具&#xff0c;功能强大&#xff0c;并且可以通过网络和其他平台同步视频内容。可以使用多个设备进行投屏&#xff0c;快速查看同一局域网内的视频。支持的设备&#xff1a;苹果系统。支持 Windows、 Mac、 Android、 iOS、 windows平台。 1、支持…

用腾讯轻联,打通草料二维码与其他应用的连接

一、功能介绍 腾讯轻联是腾讯云推出的“应用连接器”&#xff0c;无需编程&#xff0c;实现多应用的连接。草料二维码作为首批入驻腾讯轻联的合作伙伴和腾讯团队进行了深度协同&#xff0c;提供给用户以下能力&#xff1a; 1.快速对接主流应用 实现企业微信、钉钉、腾讯文档…

基于AT89C52单片机的电子密码锁设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87688544?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个简易的电子密码锁,并进行仿真实验,该系统能够进行密码输入功能、上锁功能、在锁合状态下通过输入密码进行…

Java并发编程 —— 延迟队列DelayQueue源码解析

一、什么是DelayQueue DelayQueue是一个支持并发的无界延迟队列&#xff0c;队列中的每个元素都有个预定时间&#xff0c;当线程从队列获取元素时&#xff0c;只有到期元素才会出队列&#xff0c;没有到期元素则阻塞等待。队列头元素是最快要到期的元素。因此DelayQueue可用于…

[java聊天室]多个客户端与服务器说话多线程(二)

多客户端链接 之前(java聊天室一)只有第一个连接的客户端可以与服务端说话。 原因: 服务端只调用过一次accept方法&#xff0c;因此只有第一个客户端链接时服务端接受了链接并返回了Socket,此时可以与其交互。 而第二个客户端建立链接时&#xff0c;由于服务端没有再次调用…

【Hello Linux】线程池

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;简单介绍linux中线程池概念 线程池 Linux线程池线程池的概念线程池的优点线程池的应用场景线程池实现 Linux线程池 线程池的概念 线程池是一种线程…

PyTorch深度学习实战 | 高斯混合模型聚类原理分析

01、问题描述 为理解高斯混合模型解决聚类问题的原理&#xff0c;本实例采用三个一元高斯函数混合构成原始数据&#xff0c;再采用GMM来聚类。 1) 数据 三个一元高斯组件函数可以采用均值和协方差表示如表1所示&#xff1a; ▍表1 三个一元高斯组件函数的均值和协方差 每个高斯…