zoukankan      html  css  js  c++  java
  • 1441. 用栈操作构建数组『简单』

    题目来源于力扣(LeetCode

    一、题目

    1441. 用栈操作构建数组

    说明:

    • 1 <= target.length <= 100
    • 1 <= target[i] <= 100
    • 1 <= n <= 100
    • target 是严格递增的

    二、解题思路

    1. 关键点:定义一个从 1 开始记数的变量

    2. 遍历 target 数组,每次遍历都先 Push 一次

    3. 判断元素是否需要 Pop

      当前遍历的元素与记数的变量 j 不相等时,Pop 一次,且遍历的索引需要减 1,表示重复遍历该元素,判断是否还需要再 Pop

    4. 每次遍历,变量 j 都加 1

    本方式题解中未使用到参数 n

    三、代码实现

    public static List<String> buildArray(int[] target, int n) {
        List<String> list = new ArrayList<>();
        // 变量 j 记录从 1 开始的数字,每次加 1
        int j = 1;
        for (int i = 0; i < target.length; i++) {
            // 每次遍历都需要一次 push
            list.add("Push");
            if (target[i] != j) {
                // 当前遍历元素与 j 不相等时,需要 pop 一次,即弹出已经 Push 的元素
                list.add("Pop");
                // 本次遍历不计算,重新遍历当前元素
                i --;
            }
            // j 每次加 1
            j ++;
        }
        return list;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        int[] target = {1, 3};
        int n = 3;  // output:{"Push", "Push", "Pop", "Push"}
    
    //    int[] target = {1, 2, 3};
    //    int n = 3;  // output:{"Push", "Push", "Push"}
    //
    //    int[] target = {1, 2};
    //    int n = 4;  // output:{"Push", "Push"}
    //
    //    int[] target = {2, 3, 4};
    //    int n = 4;  // output:{"Push", "Pop", "Push", "Push", "Push"}
    
        List<String> result = buildArray(target, n);
        System.out.println(Arrays.toString(result));
    }
    
  • 相关阅读:
    模块和包
    异常处理
    re模块下的的常用方法
    lambda匿名函数sorted排序函数filter过滤函数map映射函数
    内置函数
    生成器函数,迭代器
    网站架构伸缩性概论
    网站架构高可用小结
    Apache的三种工作模式
    HTTP协议
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/12906823.html
Copyright © 2011-2022 走看看