每天一道算法题第3天--排序子序列

news2024/11/25 11:06:07

排序子序列

  • 1.题目
  • 2.题目解析
  • 3.代码

1.题目

链接: 排序子序列
图1

2.题目解析

  • 【题目解析】:
    本题要求解的是排序子序列,排序子序列为非递增或者非递减,很多同学在这个非递增、非递减问题上很纠
    结,注意:非递减就是a[i]<=a[i+1],递减就是a[i]>a[i+1],非递增就是a[i]>=a[i+1],递增就是a[i]<a[i+1]。
    其实这个不理解网上搜一下就理解了。
  • 【解题思路】:
    解题思路:
  1. 本题依次比较整个数组
  2. a[i+1]>a[i] ,则进入非递减序列判断,直到遍历到下一个值不大于等于为止count++,然后进行下一位置的判断
  3. a[i+1]<a[i],则进入非递增序列判断,直到遍历到下一个值不小于等于为止count++,然后进行下一位
    置的判断
  4. a[i+1] == a[i]不进行操作,++i进行下一位置遍历,因为相等既可以属于非递增序列,也可以属于非递减序列。
  • 本题注意点:本题开始比较a[i+1]与a[i]进行比较,为了避免越界,数组定义为n+1个,同时给a[n] = 0;a[n] = 0带来的影响,我们分为三种情况讨论:
  1. 若到a[n-1] 的最后一组是非递减序列,当in-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),里面的循环结束,i++,count++,in,外面的循环结束。
  2. 若到a[n-1] 的最后一组是非递增序列,当in-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),循环再走一次,i++, i n,里面的循环结束,i++,count++,i==n+1,外面的循环结束。
  3. 第三种情况 1 2 1 2 1最后一个数是单独的情况,后面补个0,序列变成1 2 1 2 1 0,当走完全面的序列i==n-1时,a[i] > a[i+1],进入判断出一个非递增序列,count++,i++,循环结束。
  4. 也就是说数组最后一个位置多增加一个0,不会影响第1、2情况的判断,主要是帮助第3情况的正确判断。

3.代码

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
//创建容器
vector<int> a;
a.resize(n+1);
a[n]={0};//初始化0
//读入数组
for(int i=0;i<n;i++)
{
    cin>>a[i];
}
int j=0;
int count=0;
while(j<n)
{
    //非递减序列
    if(a[j]<a[j+1])
    {
        while(j<n&&a[j]<a[j+1])
        {
            j++;
        }
        count++;
        j++;
        
    }
    else if (a[j] == a[j + 1])
    {
    j++;
    }
    //非递增
    else if(a[j]>a[j+1])
    {
        while (j<n&&a[j]>a[j+1]) {
        j++;
        }
        count++;
        j++;
    }

}
cout << count << endl;
    return 0 ;  

}
// 64 位输出请用 printf("%lld")

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

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

相关文章

facebook文本生成音乐项目-audiocraft 安装教程

文章目录 所需环境安装ffmpeg克隆项目仓库安装相关依赖库运行项目模型下载自动下载模型失败MusicGen 模型下载地址 所需环境 ffmpegpython>3.9gitcuda118&#xff08;torch>2.0&#xff09; 安装ffmpeg 下载地址 下载后解压&#xff0c;然后将解压后的目录配置到系统…

chatgpt赋能python:Python怎么求最大值

Python怎么求最大值 如果您正在寻找一种简便快捷的方法来从一组数字中找到最大值&#xff0c;那么Python就是您的选择。作为一种易于学习和使用的编程语言&#xff0c;Python在数据处理和分析方面越来越受欢迎。本文将介绍如何使用Python来找出一组数字中的最大值&#xff0c;…

MySQL数据库基本命令操作

MySQL数据库基本命令操作 一、MySQL基本命令操作指令二、查看数据库结构1&#xff0e;查看当前服务器中的数据库2&#xff0e;查看数据库中包含的表3&#xff0e;查看表的结构&#xff08;字段&#xff09; 三、SQL语句1、SQL语言分类 四、SQL语句操作1、创建及删除数据库和表2…

Nucleo-F411RE (STM32F411)LL库体验 2 -sysclk的配置

Nucleo-F411RE &#xff08;STM32F411&#xff09;LL库体验 2 -sysclk的配置 1、Nucleo-F411RE 时钟源 Nucleo-F411RE开发版只有一个8M的晶振&#xff0c;看起来像是给st-link提供时钟的&#xff0c;所以猜测F411RE时钟的来源应该来自st-link&#xff08;stm32F103c8t6&#…

数据库是什么?为什么要使用它?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、数据库是什么&#xff1f; 二、为什么要⽤数据库 1、方便用户 2、安全的保存数据 3、利用数据库分析 三、数据库的分类 1、关…

chatgpt赋能python:Python添加包的方法

Python添加包的方法 Python是一种高级编程语言&#xff0c;拥有着强大的库和模块。在开发过程中&#xff0c;很大一部分时间会用于查找、安装和更新各种包或依赖库。本文将介绍Python添加包的方法&#xff0c;以帮助开发者更快地找到并安装所需的包及依赖库。 什么是包 在Py…

Java 中的重载(overload)和重写(override)

​ 重载和重写都是面向对象编程中的概念&#xff0c;但我们或许还听说过一种叫做覆写&#xff08;overwrite&#xff09;的概念。C 是拥有这个概念的&#xff0c;Java 只有 overload 和 override&#xff0c;Python 只有隐式的 overload 和 override&#xff0c;没有 o…

海思平台上USB WIFI的移植与局域网无线调试和视频流预览

目录 1.海思平台上USB WIFI移植概述 1.1、移植WIFI背景 1.2、移植的起点 1.3、实验案例 2.AP模式USB WIFI驱动移植 2.1、源码 2.2、修改移植 3.AP模式USB WIFI传输视频实战 3.1、部署USB WIFI驱动使之工作为AP 3.2、准备测试用例 3.3、测试实验 4.USB WIFI做sta模式…

python函数详解(超详细)

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 首先零基础是能学python的&#xff0c;很多编程大神入门之前…

Qt中的坐标体系和内存回收

目录 坐标体系 窗口的坐标原点 窗口的相对坐标 示例 内存回收 1. 自动垃圾回收机制 2. 对象树机制 示例 坐标体系 窗口的坐标原点 在Qt中&#xff0c;坐标系统一般是以窗口左上角为原点&#xff0c;向右为正方向X轴&#xff0c;向下为正方向Y轴。 窗口的相对坐标 在一个…

node.js+vue企业人事管理系统q731f

中小企业人事管理系统的主要开发目标如下&#xff1a; &#xff08;1&#xff09;实现管理系统信息关系的系统化、规范化和自动化&#xff1b; &#xff08;2&#xff09;减少维护人员的工作量以及实现员工对信息的控制和管理。 &#xff08;3&#xff09;方便查询信息及管理信…

chatgpt赋能python:Python编程中的警告是什么?

Python编程中的警告是什么&#xff1f; 在Python编程中&#xff0c;警告是指在程序运行时出现的一些提示信息。这些警告通常不会导致程序崩溃&#xff0c;但却表明程序中存在某些问题。例如&#xff0c;警告可以是一个不推荐使用的语法或者可能导致性能退化的某个编码模式。通…

发布关于Strve.js的动态,被Vite团队核心成员点赞的那些事!

近日&#xff0c;在浏览之前发的推特文章时&#xff0c;发现了曾经被Vite团队核心成员 Matias Capeletto 点赞的一篇动态&#xff0c;心里格外的高兴。 被大佬认可&#xff0c;也是值得开心的一件事情。毕竟独立开发一个前端框架&#xff0c;其中的艰辛也只有像参与过类似设计框…

IAB讨论互联网碎片化:互操作性是互联网的关键属性

日前&#xff0c;一场针对互联网碎片化的讨论由互联网体系结构委员会&#xff08;IAB&#xff09;发起&#xff0c;主题涉及互联网碎片化的定义、概念、治理方式与未来发展。互联网治理论坛&#xff08;IGF&#xff09;咨询顾问维姆德格泽尔与大西洋理事会成员康斯坦丁诺斯科迈…

我的个人网站 —— 直接使用GPT4

前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客css Loading 实战教学https://blog.csdn.net/m0_57904695/article/details/131156011?spm1001.2014.3001.5501 目录 ✈ 线上预览&#xff1a; ✅ G4 WEB 效果图例 &…

chatgpt赋能python:Python函数用法查看指南

Python函数用法查看指南 对于Python程序员来说&#xff0c;熟练查看函数用法是必不可少的技能。无论是入门级的学习者还是有多年编程经验的工程师都需要时常查看函数用法&#xff0c;以确保程序的正确性与效率。在本篇文章中&#xff0c;我们将介绍Python函数用法的常用方法与…

chatgpt赋能python:Python如何放在桌面:简单步骤和相关应用

Python如何放在桌面&#xff1a;简单步骤和相关应用 如果你是一名Python程序员&#xff0c;想要将Python放在桌面上以便在日常工作中更快捷地打开&#xff0c;并增强开发效率&#xff0c;那么这篇文章就是为你准备的。在这里&#xff0c;我们将介绍如何将Python安装在桌面上、…

chatgpt赋能python:Python怎么查找序列中的数字

Python怎么查找序列中的数字 在Python编程中&#xff0c;要查找序列中的数字是非常常见的任务。比如&#xff0c;我们需要查找一个列表中是否包含某个数字&#xff0c;或者在一个字符串中查找某个数字的出现次数等等。本文将介绍Python中查找序列中数字的几种方法&#xff0c;…

chatgpt赋能python:Python如何横排输出:实现方法详解

Python如何横排输出&#xff1a;实现方法详解 Python是一种高级编程语言&#xff0c;非常适合初学者入门。Python有很多应用程序领域&#xff0c;例如Web开发、数据分析、人工智能和机器学习等。在这些领域中&#xff0c;输出排版和显示的格式都十分重要。在某些情况下&#x…

C++静态转换

目录 1.1基本类型间的转换 1.2指针转换的限制 1.3空指针的转换 1.4弃值表达式 1.5左值转到右值 1.6类层次结构基类和派生类间的指针或引用转换 用法&#xff1a;static_cast<type_name> (expression) 说明&#xff1a;该运算符把expression转换为type_name类型stat…