【LeetCode每日一题】【模拟题】1441. 用栈操作构建数组 Java实现


题目

在这里插入图片描述

我的思路(正确)

首先明确:

  • target数组是严格递增的

  • list中的元素是从1开始的、连续的、严格递增的

  • 如果list中的元素在target数组中,那么需要向返回的list中加入"Push"

    • 比如示例二,target=[1,2,3],n=3,那么list={1,2,3},输出的就是1个list,其中包含3个"Push"
  • 如果list中的部分元素不在target数组中,则需要向返回的list中加入"Push",再加入"Pop"

    • 比如实例一,target=[1,3],n=3,那么list={1,2,3},输出的就是1个list,内容为[“Push”,“Push”,“Pop”,“Push”]
  • 如果target数组的长度小于n,以target数组为主,数组遍历结束,循环就结束

    • 比如,示例三,target=[1,2],n=4,那么list={1,2,3,4},由于target数组只有两个数字,所以target数组读取完成就结束

在这里插入图片描述

import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<String> buildArray(int[] target, int n) {

        List<String> list = new ArrayList<>();

        //i用来遍历target数组
        int i = 0;
        
        //下标j用来遍历{1,2,3,...,n}
        int j = 0;
        while (j < n && i < target.length) {
            list.add("Push");
            if (j + 1 != target[i]) {
                list.add("Pop");
            } else {
                i++;
            }
            j++;
        }
        return list;
    }
}

版权声明:本文为guliguliguliguli原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。