879177. Insertion in deque

Basic

Insertion in deque

Summary

Insertion in a deque (double-ended queue) is a fundamental operation that involves adding an element at either end of the data structure. This problem focuses on efficiently inserting elements into a deque, highlighting key concepts like queue operations and STL (Standard Template Library) usage.

Detailed Explanation

To solve this problem, we'll employ the std::deque class from the C++ Standard Template Library, which provides efficient insertion and deletion at both ends. Our goal is to write a function that inserts an element into the deque at a specified position.

Algorithmic Approach

  1. Check if the given position is within the valid range (i.e., not exceeding the size of the deque). If it's invalid, return an error or handle it accordingly.
  2. Calculate the actual position to be used for insertion by considering wrap-around behavior at both ends. For example, if the desired position is greater than the current size, consider inserting at the beginning (front) of the deque, and vice versa.
  3. Use the std::deque::insert method to insert the element at the calculated position.

Time Complexity Analysis

The time complexity for this operation depends on the insertion position:

  • If the desired position is within the existing size of the deque, the time complexity remains O(1), as only a single element needs to be shifted.
  • When inserting at either end (front or back), the time complexity becomes O(k), where k is the distance from the current end to the desired insertion point. This occurs when the deque grows by shifting existing elements.

Space Complexity Analysis

The space complexity remains constant, as we only use additional memory for the inserted element itself, independent of the size of the deque.

Optimized Solutions

Here are optimized solutions in various programming languages:

#### Java

View on GeeksforGeeks
import java.util.Deque;
import java.util.LinkedList;

public class InsertionInDeque {
    public static void insertAtPosition(Deque<Integer> deque, int position, int element) {
        if (position > deque.size()) {
            // Handle invalid position or wrap-around at the beginning
            deque.addFirst(element);
        } else {
            // Calculate actual position for insertion
            int actualPosition = position % deque.size();
            // Use std::deque::insert to insert the element at the calculated position
            if (actualPosition == 0) {
                deque.addFirst(element);
            } else {
                deque.addLast(element);
            }
        }
    }
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.