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

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

题目要求

思路:模拟【双指针】

按题意模拟即可:

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

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

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

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

Java

class Solution {
    public List buildArray(int[] target, int n) {
        List res = new ArrayList();
        for (int i = 1, cur = 0; i 
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

C++

class Solution {
public:
    vector buildArray(vector& target, int n) {
        vector res;
        for (int i = 1, cur = 0; i 
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

Rust

impl Solution {
    pub fn build_array(target: Vec, n: i32) -> Vec {
        let mut res = Vec::new();
        let mut cur = 0;
        for i in 1..(n + 1) {
            if (cur 
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

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

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/java/5008.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部