讲义
课程
作业
真题
竞赛
课时
模板
  • 2023天津CSP-J组 第一轮 成绩
  • 2023天津CSP-S组 第一轮 成绩
  • 2023天津CSP第二轮晋级名单(J&S)
  • 2023竞赛大纲
  • 2023机试环境(禁止使用手机下载,镜像文件过大)
课程
作业
真题
竞赛
课时
模板
  • 2023天津CSP-J组 第一轮 成绩
  • 2023天津CSP-S组 第一轮 成绩
  • 2023天津CSP第二轮晋级名单(J&S)
  • 2023竞赛大纲
  • 2023机试环境(禁止使用手机下载,镜像文件过大)
  • 作业
    • 第一课
    • 第二课
    • 第三课

单调栈

单调栈

输入数据:

[3,4,1,5,6,2,7]

输出数据:

[[-1,2],[0,2],[-1,-1],[2,5],[3,5],[2,-1],[5,-1]]

你的代码

#include <iostream>  
using namespace std;  

const int N = 1e5+10; // 定义最大数组大小  

int main() {  
    int nums[N] = {1, 2, 1, 3, 2, 2, 4}; // 输入数组  
    int n = 7; // 数组大小  
    int result[N][2]; // 结果数组,存储[l, r]   
    for (int i = 0; i < n; ++i) {  
        result[i][0] = -1;  
        result[i][1] = -1; 
    }  
      for (int i = 0; i < n; ++i) {  
        // 向左查找  
        for (int j = i - 1; j >= 0; --j) {  
            if (nums[j] == nums[i]) {  
                result[i][0] = j; // 找到左侧重复元素的位置  
                break; // 找到后退出  
            }  
        }  
        
        // 向右查找  
        for (int j = i + 1; j < n; ++j) {  
            if (nums[j] == nums[i]) {  
                result[i][1] = j; // 找到右侧重复元素的位置  
                break; // 找到后退出  
            }  
        }  
    }  

    // 打印结果  
    for (int i = 0; i < n; ++i) {  
        cout << "[" << result[i][0] << ", " << result[i][1] << "] ";  
    }  
    cout << endl;  

    return 0;  
}
Prev
第一课
Next
第三课
津ICP备2020007982号-2