leetcode 594.最长和谐子序列(滑动窗口)

news/2024/5/20 10:10:21 标签: leetcode, 滑动窗口, 刷题

⭐️ 题目描述

在这里插入图片描述


🌟 leetcode链接:最长和谐子序列

思路: 第一步先将数组排序,在使用滑动窗口(同向双指针),定义 left right 下标,比如这一组数 {1,3,2,2,5,2,3,7} 排序后 {1,2,2,2,3,3,5,7} 因为是排序过后的数组所以当前 right 就是当前区间(窗口)的最大值,而 left 就是当前区间(窗口)的最小值,nums[right] - nums[left] == 1 的话就更新当前窗口的长度并 ++right,若 nums[right] - nums[left] > 1leftright 靠近因为是升序数组,若 nums[right] - nums[left] < 1++right

代码:

class Solution {
public:
    int findLHS(vector<int>& nums) {
        // 排序
        sort(nums.begin() , nums.end());

        // 滑动窗口 同向双指针
        int left = 0;
        int right = 0;
        int ans_length = 0;
        while (right < nums.size()) {
            // 升序数组 left就指向当前窗口的最小值
            // right指向的是当前窗口的最大值
            if (nums[right] - nums[left] > 1) {
                // 差值大于1 让left 向 right 靠近
                left++;
            } else if (nums[right] - nums[left] < 1) {
                // 差值小于1 让right++
                right++;
            } else {
                // 当前窗口的最大值和最小值差是1
                // 更新长度
                ans_length = max(ans_length , right - left + 1);
                right++;
            }
        }

        return ans_length;
    }
};


http://www.niftyadmin.cn/n/5010928.html

相关文章

Word怎么在线转换PDF?分享pdf转jpg的方法

如果想要文件的格式进行转换&#xff0c;转换成自己要的文件格式&#xff0c;就不得不使用到转换器&#xff0c;但是大多的转换器都是需要安装客户端才能正常使用的&#xff0c;有时候出门在外&#xff0c;想要转换就不是很方便了。如果有在线转换工具&#xff0c;就能解决这一…

《DevOps实践指南》- 读书笔记(三)

DevOps实践指南 Part 3 第一步 &#xff1a;流动的技术实践9. 为部署流水线奠定基础9.1 按需搭建开发环境、测试环境和生产环境9.2 应用统一的代码仓库9.3 使基础设施的重建更容易9.4 运行在类生产环境里才算“完成”9.5 小结 10. 实现快速可靠的自动化测试10.1 对代码和环境做…

Java基础学习笔记-4

前言 本学习笔记将介绍Java中的数组概念以及各种与数组相关的操作和示例代码。 Java基础学习笔记-1 Java基础学习笔记-2 Java基础学习笔记-3 Demo01 - 声明和初始化数组 public class Demo01 {public static void main(String[] args) {// 声明一个数组&#xff0c;指明了里…

端口已被占用

报的错误 Exception in thread "Thread-76" java.net.BindException: Address already in use: bindat sun.nio.ch.Net.bind0(Native Method)at sun.nio.ch.Net.bind(Net.java:433)at sun.nio.ch.Net.bind(Net.java:425)at sun.nio.ch.ServerSocketChannelImpl.bind…

Handler 同步屏障异步消息

什么是同步屏障 简单来说&#xff0c;同步屏障就是一套为了让特殊消息更快执行的一个机制。 这里我们假设一个场景&#xff1a;我们向主线程发送了一个UI绘制操作Message&#xff0c;而此时消息队列中的消息非常多&#xff0c;那么这个Message的处理可能会得到延迟&#xff0…

4. xaml Button按钮

1.运行图片 2.源码 <Grid><!--BorderBrush="BlueViolet" 边框颜色--><!--BorderThickness="2" 边框线的粗细--><

Openresty(Nginx)内网安装,手把手详细教学+附安装包

Openresty&#xff08;nginx&#xff09;配置文档 一、基础Linux指令 查看nginx进程是否启动&#xff1a;ps -ef | grep nginx 关闭防火墙&#xff1a;systemctl stop firewalld 开放80端口&#xff1a;firewall-cmd --zonepublic --add-port80/tcp --permanent 关闭80端口&am…

【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献

【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献 1 题目 1.1 问题背景 多波束测深系统是利用声波在水中的传播特性来测量水体深度的技术&#xff0c;是在单波束测深的基础上发展起来的&#xff0c;该系统在与航迹垂直的平面内一次能发射出数十个乃至上百个…