返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Java C++题解leetcode1441用栈操作构建数组示例
  • 400
分享到

Java C++题解leetcode1441用栈操作构建数组示例

Java C++ 栈操作构建数组Java C++ LeetCode题解 2022-11-13 18:11:47 400人浏览 独家记忆
摘要

目录题目要求思路:模拟【双指针】Javac++Rust题目要求 思路:模拟【双指针】 按题意模拟即可: 一个指针cur依次指向target中的每个元素,另一个指针i依次指向1&s

题目要求

思路:模拟【双指针】

按题意模拟即可:

一个指针cur依次指向target中的每个元素,另一个指针i依次指向1∼n的数字;

对i所指向的每个数字进行Push操作,然后判断当前数字与target[cur]是否相等;

  • 相等则判断下一个数字,同时将cur指向下一个元素;
  • 否则需进行Pop操作。

过程中需注意cur的越界,当其越界则target构造完毕。

Java

class Solution {
    public List<String> buildArray(int[] target, int n) {
        List<String> res = new ArrayList<>();
        for (int i = 1, cur = 0; i <= n && cur < target.length; i++) {
            res.add("Push");
            if (target[cur] != i)
                res.add("Pop");
            else
                cur++;
        }
        return res;
    }
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

C++

class Solution {
public:
    vector<string> buildArray(vector<int>& target, int n) {
        vector<string> res;
        for (int i = 1, cur = 0; i <= n && cur < target.size(); i++) {
            res.emplace_back("Push");
            if (target[cur] != i)
                res.emplace_back("Pop");
            else
                cur++;
        }
        return res;
    }
};
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

Rust

impl Solution {
    pub fn build_array(target: Vec<i32>, n: i32) -> Vec<String> {
        let mut res = Vec::new();
        let mut cur = 0;
        for i in 1..(n + 1) {
            if (cur < target.len()) {
                res.push(String::from("Push"));
                if (target[cur] != i) {
                    res.push(String::from("Pop"));
                }
                else {
                    cur += 1;
                }
            }          
        }
        res
    }
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

以上就是Java C++题解LeetCode1441用栈操作构建数组示例的详细内容,更多关于Java C++ 栈操作构建数组的资料请关注编程网其它相关文章!

--结束END--

本文标题: Java C++题解leetcode1441用栈操作构建数组示例

本文链接: https://lsjlt.com/news/169510.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作