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

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

牛客对应题目链接:排序子序列_牛客笔试题_牛客网 (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;
}

三、反思与改进

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


相关文章
|
6月前
|
存储 索引
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
40 1
|
6月前
|
数据采集 算法 数据挖掘
LeetCode 题目 80:删除排序数组中的重复项 II【算法面试高频题】
LeetCode 题目 80:删除排序数组中的重复项 II【算法面试高频题】
|
7月前
【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)
【错题集-编程题】数组中的最长连续子序列(排序 + 模拟)
|
7月前
【编程题-错题集】chika 和蜜柑(排序 / topK)
【编程题-错题集】chika 和蜜柑(排序 / topK)
|
7月前
【错题集-编程题】最长上升子序列(二)(贪心 + 二分)
【错题集-编程题】最长上升子序列(二)(贪心 + 二分)
[leetcode 324] 摆动排序 II 思维+排序
[leetcode 324] 摆动排序 II 思维+排序
79 0
|
算法
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
82 0
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
|
存储 算法 搜索推荐
八大排序算法总结+例题练习(正在不断补充...)
八大排序算法总结+例题练习(正在不断补充...)
八大排序算法总结+例题练习(正在不断补充...)
|
存储 算法 C语言
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
147 0
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~