[蓝桥杯刷题]合并区间、最长不连续子序列、最长不重复数组长度

前言

在这里插入图片描述

⭐Hello!这里是欧_aita的博客。
⭐今日语录: 成功的关键在于对目标的持久追求。
⭐个人主页:欧_aita
ψ(._. )>⭐个人专栏:
数据结构与算法
数据库

在这里插入图片描述

在这里插入图片描述

文章目录

  • 前言
  • 合并区间问题📕
    • 现实应用
    • 大致思路
    • 代码实现
    • 代码讲解
  • 最长不连续子序列📕
    • 代码实现
      • 代码讲解
  • 滑动窗口求最长不重复子序列的长度📕
    • 大致思路
    • 代码实现

合并区间问题📕

现实应用

  • 合并重叠区间: 将给定的一组区间合并成尽可能少的不相交或相邻的区间。
  • 区间调度: 在一系列任务或活动中,每个任务有一个开始时间和结束时间,选择尽可能多的任务而不相互冲突。
  • 时间区间问题: 处理一系列时间区间,例如查找某个时间点同时发生的事件。
  • 日程安排: 对一组日程进行调度,以确定可以安排多少个活动而不冲突。

大致思路

在这里插入图片描述

代码实现

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef pair<int, int> PII;

const int N = 100010;

int n;
vector<PII> segs;

// 区间合并后的区间个数
// 1. 按区间左端点排序
// 2. 左端点st 右端点ed

void merge(vector<PII>& segs) {
    vector<PII> res;

    sort(segs.begin(), segs.end());

    int st = -2e9, ed = -2e9;
    for (auto seg : segs)
        if (ed < seg.first) {
            if (st != -2e9) res.push_back(make_pair(st, ed));
            st = seg.first, ed = seg.second;
        } else
            ed = max(ed, seg.second);

    if (st != -2e9) res.push_back(make_pair(st, ed));

    // 用合并后的区间更新原始向量
    segs = res;
}

int main() {
    cin >> n;

    for (int i = 0; i < n; i++) {
        int l, r;
        cin >> l >> r;
        segs.push_back({l, r});
    }

    merge(segs);

    cout << segs.size() << endl;

    return 0;
}

代码讲解

sort(seg.begin(),seg.end());

这里的排序是通过vector数组中的pair数组中的first数据元素大小判断的。

在这里插入图片描述

最长不连续子序列📕

代码实现

#include <iostream>
#include <cstring>

using namespace std;

int main() {
    char str[1000];

    cout << "Enter a string: ";
    fgets(str, sizeof(str), stdin);

    int n = strlen(str);

    for (int i = 0; str[i]; i++) {
        int j = i;
        while (j < n && str[j] != ' ') {
            j++;
        }

        // 输出提取的单词
        for (int k = i; k < j; k++) {
            cout << str[k];
        }

        cout << endl;

        i = j;
    }

    return 0;
}

代码讲解

for (int i = 0; str[i]; i++) {
        int j = i;
        while (j < n && str[j] != ' ') {
            j++;
        }

        // 输出提取的单词
        for (int k = i; k < j; k++) {
            cout << str[k];
        }

        cout << endl;

        i = j;
    }

注意for循环的末端,将子序列的最后一个字符下标赋给了i,然后在for循环中i又+1就是下一个空格或者末端的位置

fgets(str, sizeof(str), stdin);:使用fgets函数从标准输入中读取用户输入的字符串,并存储到str数组中。sizeof(str)确保不会超出数组的边界。

滑动窗口求最长不重复子序列的长度📕

大致思路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这个过程中不断计数,求取最长不重复数组长度。

代码实现

#include <iostream>
#include <cstring>

using namespace std;

const int N = 100010;

int n;
int a[N], s[N];

int main() {
    cin >> n;
    for (int i = 0; i < n; i++)cin >> a[i];

    int res = 0;
    for (int i = 0, j = 0; i < n; i++)
    {
        s[a[i]]++;
        while(s[a[i]]>1)
        {
            s[a[j]]--;
            j++;
        }
        res = max(res, i - j + 1);
    }
    cout << res << endl;

    return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Kotlin核心编程》笔记:面向对象

kotlin 中的类 // Kotlin中的一个类 class Bird {val weight: Double 500.0val color: String "blue"val age: Int 1fun fly() { } // 全局可见 }把上述代码反编译成Java的版本&#xff0c;然后分析它们具体的差异&#xff1a; public final class Bird {privat…

一种用于心音分类的轻量级1D-CNN+DWT网络

这是由National Institute of Technology Rourkela, Central University of Rajasthan发布在2022 ICETCI的论文&#xff0c;利用离散小波变换(DWT)得到的多分辨率域特征对1D-CNN模型进行心音分类训练。 预处理& DWT 由于FHS和各种病理声的频率范围在500hz以下[5]&#xff…

华为配置VRRP负载分担示例

组网需求 如图1所示&#xff0c;HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力&#xff0c;HostA以SwitchA为默认网关接入Internet&#xff0c;SwitchB作为备份网关&#xff1b;HostC以SwitchB为默认网关接入Internet&#xff0c;Switc…

智能高效的Go开发工具GoLand v2023.3发布,支持AI辅助编码!

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议&#xff0c;通过一步撤消快速安全重构&#xff0c;智能代码完成&#xff0c;死代码检测和文档提示帮助所有 Go 开发人员&#xff0c;从新手到经验丰富的专业人士&#xff0c;创建快速、高效、和可靠的…

力扣785.判断二分图

存在一个 无向图 &#xff0c;图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph &#xff0c;其中 graph[u] 是一个节点数组&#xff0c;由节点 u 的邻接节点组成。形式上&#xff0c;对于 graph[u] 中的每个 v &#xff0c;都存…

win10环境下git安装和基础操作

简述 关于git的作用就不多赘述了&#xff0c;配合GitHub&#xff0c;达到方便人们日常项目维护和管理&#xff0c;每一次项目增删改查都可以看的清清楚楚&#xff0c;方便团队协作和个人项目日常维护。 下载git 首先我们自然是要到官网下载git&#xff0c;下载地址为https:/…

【日常笔记】notepad++ 正则表达式基本用法

一、场景 二、正则表达式--语法 2.1、学习基本的匹配字符&#xff1a; 2.2、学习特殊字符和量词&#xff1a; 2.3、学习转义字符 2.4、学习分组和捕获 2.5、区分大小写 和 匹配整个单词 2.6、引用分组 三、实战 ▶ 希望把课程目录中 -- 前面的都去掉 一、场景 希望把…

Linux第一个小程序——进度条

Linux第一个小程序——进度条 1. 前言2. 缓冲区概念3. \r && \n4. 进度条实现4.1 初级进度条4.2 升级进度条 1. 前言 在我们写这个小程序之前&#xff0c;我们要用到我们学的三个知识点 gcc的使用vim的使用make/makefile的使用 除此之外还需要一些其他的知识点&…

LVS简介及LVS-NAT负载均衡群集的搭建

目录 LVS群集简介 群集的含义和应用场景 性能扩展方式 群集的分类 负载均衡&#xff08;LB&#xff09; 高可用&#xff08;HA&#xff09; 高性能运算&#xff08;HPC&#xff09; LVS的三种工作模式 NAT 地址转换 TUN IP隧道 IP Tunnel DR 直接路由 Direct Rout…

maven jar sort

1&#xff09;往常项目结构lib包排序 2&#xff09;maven的默认是没有排序的

elasticsearch|大数据|kibana的安装(https+密码)

前言&#xff1a; kibana是比较好安装的&#xff0c;但https密码就比较麻烦一些了&#xff0c;下面将就如何安装一个可在生产使用的kibana做一个简单的讲述 一&#xff0c; kibana版本和下载地址 这里我想还是强调一下&#xff0c;kibana的版本需要和elasticsearch的版本一…

ArcGIS Pro SDK文件选择对话框

文件保存对话框 // 获取默认数据库var gdbPath Project.Current.DefaultGeodatabasePath;//设置文件的保存路径SaveItemDialog saveLayerFileDialog new SaveItemDialog(){Title "Save Layer File",OverwritePrompt true,//获取或设置当同名文件已存在时是否出现…

如何用Adobe Audition 检测波形的pop和卡顿

在Adobe Audition中&#xff0c;检测卡顿和pop的方法各有不同&#xff1a; 1. **检测卡顿**&#xff1a; - 使用“诊断”面板中的“删除静音”或“标记音频”选项可以帮助识别音频中的静音段落&#xff0c;这可能表明存在卡顿。 - 配置诊断设置&#xff0c;指定静音的振…

HarmonyOS应用元服务上架

HarmonyOS应用/元服务上架 概述 当您开发、调试完HarmonyOS应用/元服务&#xff0c;就可以前往AppGallery Connect申请上架&#xff0c;华为审核通过后&#xff0c;用户即可在华为应用市场获取您的HarmonyOS应用/元服务。 HarmonyOS会通过数字证书与Profile文件等签名信息来…

LeetCode:2415. 反转二叉树的奇数层(层次遍历 Java)

目录 2415. 反转二叉树的奇数层 题目描述&#xff1a; 实现代码与解析&#xff1a; BFS 原理思路&#xff1a; 2415. 反转二叉树的奇数层 题目描述&#xff1a; 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。 例如&#xff0c;…

Hadoop和Spark的区别

Hadoop 表达能力有限。磁盘IO开销大&#xff0c;延迟度高。任务和任务之间的衔接涉及IO开销。前一个任务完成之前其他任务无法完成&#xff0c;难以胜任复杂、多阶段的计算任务。 Spark Spark模型是对Mapreduce模型的改进&#xff0c;可以说没有HDFS、Mapreduce就没有Spark。…

解决:AttributeError: ‘dict’ object has no attribute ‘has_key’

解决&#xff1a;AttributeError: ‘dict’ object has no attribute ‘has_key’ 文章目录 解决&#xff1a;AttributeError: dict object has no attribute has_key背景报错问题报错翻译报错位置代码报错原因解决方法方法一方法二方法三今天的分享就到此结束了 背景 在使用之…

软件供应链投毒 — NPM 恶意组件分析

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 专栏供应链安全 数字化时代&#xff0c;软件无处不在。软件如同社会中的“虚拟人”&#xff0c;已经成为支撑社会正常运转的最基本元素之一&#xff0c;软件的安全性问题也正在成为当今社会的根本性、基础性问题。 随…

redis五种数据结构特点

redis五种数据结构特点 redis-string介绍SDS内部存储数据结构三种编码方式特点总结 redis-list介绍quicklist特点总结 redis-hash特点总结 redis-set介绍 特点总结redis-zset介绍特点总结 redis使用五种数据结构&#xff0c;分别是string&#xff08;字符串&#xff09;&#x…

使用Python实现对word的批量操作

Python在平时写写小工具真是方便快捷&#xff0c;Pyhon大法好。以下所有代码都是找了好多网上的大佬分享的代码按照自己的需求改的。 调用的库为Python-docx、win32com、PyPDF2、xlwings&#xff08;操作excel&#xff09;。 因为公司的任务要对上千个word文件进行批量操作&a…