Leetcode-editorials
Contribute
  • Leetcode question of the day
  • 08-August
    • 26. Maximum Length of Pair Chain
    • 28. Implement stack using queues
    • 29. Minimum Penalty for a Shop
    • 30. Minimum Replacements to Sort the Array
    • 31. Minimum Number of Taps to Open to Water a Garden
  • 09-September
    • 01. Counting Bits
    • 02. Extra Characters in a String
    • 03. Unique Paths
    • 04. Linked List Cycle
    • 05. Copy List with Random Pointer
    • 06. Split Linked List in Parts
    • 07. Reverse Linked List II
    • 08. Pascal's Triangle
    • 09. Combination Sum IV
    • 10. Count All Valid Pickup and Delivery Options
    • 11. Group the People Given the Group Size They Belong To
    • 12. Minimum Deletions to Make Character Frequencies Unique
    • 13. Candy
    • 14. Reconstruct Itinerary
    • 15. Min Cost to Connect All Points
    • 16. Path With Minimum Effort
    • 17. Shortest Path Visiting All Nodes
    • 18. The K Weakest Rows in a Matrix
    • 19. Find the Duplicate Number
    • 20. Minimum Operations to Reduce X to Zero
    • 21-Median of Two Sorted Arrays
    • 22- Is Subsequence
    • 23- Longest String Chain
    • 24- Champagne Tower
    • 25- Find the Difference
    • 26- Remove Duplicate Letters
    • 27- Decoded String at Index
    • 28- Sort Array By Parity
    • 29- Monotonic Array
    • 30- 132 Pattern
  • 10-October
    • 01. Reverse Words in a String III
    • 02. Remove Colored Pieces if Both Neighbors are the Same Color
    • 03. Number of Good Pairs
    • 04. Design HashMap
    • 05. Majority Element II
    • 06. Integer Break
    • 07. Build Array Where You Can Find The Maximum Exactly K Comparisons
  • 11-November
    • 01. Find Mode in Binary Search Tree
    • 02. Count Nodes Equal to Average of Subtree
    • 03. Build an Array With Stack Operations
    • 04. Last Moment Before All Ants Fall Out of a Plank
    • 07. Eliminate Maximum Number of Monsters
  • Leetcode Contests
    • Weekly Contest
      • Weekly-Contest-360
Powered by GitBook
On this page
  • My Approach
  • Time and Auxiliary Space Complexity
  • Code (C++)
  • Contribution and Support

Was this helpful?

Edit on GitHub
  1. 11-November

03. Build an Array With Stack Operations

Previous02. Count Nodes Equal to Average of SubtreeNext04. Last Moment Before All Ants Fall Out of a Plank

Last updated 1 year ago

Was this helpful?

The problem can be found at the following link:

My Approach

  1. Initialize an empty vector of strings named operations to store the sequence of operations.

  2. Initialize an integer variable targetIndex to 0, which will keep track of the current index in the target array.

  3. Inside the for loop:

    • Check if targetIndex is equal to the size of the target array. If it is, there are no more elements to match in the target array, so exit the loop by using a break statement.

  4. Check if the current element in the target array at index targetIndex is equal to i. If it is, it means the element at index targetIndex in the target array matches the current value i in the range 1 to n. In this case:

    • Append "Push" to the operations vector to represent pushing the current value i onto the stack.

    • Increment targetIndex to move to the next element in the target array.

  5. If the current element in the target array at index targetIndex is not equal to i, it means that the element at index targetIndex in the target array does not match the current value i in the range 1 to n. In this case:

    • Append "Push" to the operations vector to represent pushing the current value i onto the stack.

    • Append "Pop" to the operations vector to represent popping an element from the stack.

  6. Continue the loop until all elements in the target array have been matched or until the loop reaches the end of the range from 1 to n.

  7. After the loop, return the operations vector, which contains the sequence of operations required to transform an array into the target array using a stack.

Time and Auxiliary Space Complexity

  • Time Complexity: O(n)

  • Auxiliary Space Complexity: O(n)

Code (C++)


class Solution {
public:
    vector<string> buildArray(vector<int>& target, int n) {
        vector<string> operations;
        
        int targetIndex = 0;
        
        for (int i = 1; i <= n; i++) {
            if (targetIndex == target.size()) {
                break;  // No more elements to match in the target array
            }
            
            if (target[targetIndex] == i) {
                operations.push_back("Push");
                targetIndex++;
            } else {
                operations.push_back("Push");
                operations.push_back("Pop");
            }
        }
        
        return operations;
    }

};

Contribution and Support

For discussions, questions, or doubts related to this solution, please visit our . We welcome your input and aim to foster a collaborative learning environment.

If you find this solution helpful, consider supporting us by giving a ⭐ star to the repository.

Question Link
discussion section
rishabhv12/Daily-Leetcode-Solution