【错题集-编程题】排序子序列(模拟)

简介: 【错题集-编程题】排序子序列(模拟)

牛客对应题目链接:排序子序列_牛客笔试题_牛客网 (nowcoder.com)


一、分析题目

根据题意,用指针模拟即可。


二、代码

//知道学习的代码
#include <iostream>
using namespace std;
 
const int N = 1e5 + 10;
 
int n;
int arr[N];
 
int main()
{
    cin >> n;
    for(int i = 0; i < n; i++) cin >> arr[i];
 
    int ret = 0, i = 0;
    while(i < n)
    {
        if(i == n - 1)
        {
            ret++;
            break;
        }
 
        if(arr[i] < arr[i + 1])
        {
            while(i + 1 < n && arr[i] <= arr[i + 1]) i++;
            ret++;
        }
        else if(arr[i] > arr[i + 1])
        {
            while(i + 1 < n && arr[i] >= arr[i + 1]) i++;
            ret++;
        }
        else
        {
            while(i + 1 < n && arr[i] == arr[i + 1]) i++;
        }
        i++;
    }
 
    cout << ret << endl;
 
    return 0;
}

三、反思与改进

这是一道纯模拟题,需要考虑多种情况。这里用一个指针进行前后比较即可,不需要用到双指针。可以将数组看作成一张折线图(直观),需要考虑最开始如果是平直的线要如何处理,以及最后如果一个点自成一组该如何处理,主要就是考虑好边界情况。


相关文章
|
9月前
|
人工智能 算法 搜索推荐
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
10月前
【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)
【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)
|
10月前
【错题集-编程题】大数乘法(模拟 + 高精度乘法)
【错题集-编程题】大数乘法(模拟 + 高精度乘法)
|
10月前
【错题集-编程题】重排字符串(贪心 + 构造)
【错题集-编程题】重排字符串(贪心 + 构造)
|
10月前
|
搜索推荐 算法 Shell
【数据结构】手撕排序(排序的概念及意义、直接插入和希尔排序的实现及分析)
【数据结构】手撕排序(排序的概念及意义、直接插入和希尔排序的实现及分析)
|
10月前
|
搜索推荐 算法
拒绝水文!八大排序(一)【适合初学者】直接插入排序和希尔排序
拒绝水文!八大排序(一)【适合初学者】直接插入排序和希尔排序
|
10月前
|
存储 搜索推荐 算法
拒绝水文!八大排序(四)【适合初学者】归并排序和计数排序
拒绝水文!八大排序(四)【适合初学者】归并排序和计数排序
[leetcode 324] 摆动排序 II 思维+排序
[leetcode 324] 摆动排序 II 思维+排序
93 0
|
算法
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
96 0
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。