单调栈

# 单调栈

输入数据:

[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;  
}
上次更新: 2025-03-01 09:02:04