[go: up one dir, main page]

Open In App

Find duplicates in O(n) time and O(n) extra space | Set 1

Last Updated : 14 Oct, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

Given an array of n elements that contains elements from 0 to n-1, with any of these numbers appearing any number of times. Find these repeating numbers in O(n) and use only constant memory space.

Note: The repeating element should be printed only once.

Example: 

Input: n=7 , array[]={1, 2, 3, 6, 3, 6, 1}
Output: 1, 3, 6
Explanation: The numbers 1 , 3 and 6 appears more than once in the array.

Input : n = 5 and array[] = {1, 2, 3, 4 ,3}
Output: 3
Explanation: The number 3 appears more than once in the array.

This problem is an extended version of the following problem. 
Find the two repeating elements in a given array 

Approach 1( Using hashmap):

Use the input array to store the frequency of each element. While Traversing the array, if an element x is encountered then check if its frequency is greater than 1 , then put it in the result array. if result array is empty return -1 else sort the array and return array.

Follow the steps to implement the approach:

  1. Create an empty unordered map (hashmap) to store the frequency of each element in the array.
  2. Iterate through the given array.
  3. For each element in the array, increment its frequency count in the hashmap.
  4. Iterate through the hashmap.
  5. For each key-value pair in the hashmap, if the value (frequency count) is greater than 1, add the corresponding key (element) to the result vector.
  6. If the result vector is empty after step 3, it means no duplicates were found. In this case, add -1 to the result vector.
  7. Return the result vector containing duplicate elements or -1 if no duplicates were found.
C++
#include <bits/stdc++.h>

using namespace std;

vector<int> duplicates(long long arr[], int n) {
  
    // Step 1: Create an empty unordered map to store
    // element frequencies
    unordered_map<long long, int> freqMap;
    vector<int> result;

    // Step 2: Iterate through the array and count element frequencies
    for (int i = 0; i < n; i++) {
        freqMap[arr[i]]++;
    }

    // Step 3: Iterate through the hashmap to find duplicates
    for (auto& entry : freqMap) {
        if (entry.second > 1) {
            result.push_back(entry.first);
        }
    }

    // Step 4: If no duplicates found, add -1 to the result
    if (result.empty()) {
        result.push_back(-1);
    }
  
    // step 5: sort the result
    sort(result.begin(),result.end());
  
    // Step 6: Return the result vector containing
    // duplicate elements or -1
    return result;
}

int main() {
    long long a[] = {1, 6, 5, 2, 3, 3, 2};
    int n = sizeof(a) / sizeof(a[0]);
    
    vector<int> duplicates_found = duplicates(a, n);
    
    cout << "Duplicate elements: ";
    for (int element : duplicates_found) {
        cout << element << " ";
    }
    cout << endl;
    
    return 0;
}
Java
import java.util.*;

public class Main {
    public static List<Integer> duplicates(long[] arr) {
        // Step 1: Create an empty hashmap to store element frequencies
        Map<Long, Integer> freqMap = new HashMap<>();
        List<Integer> result = new ArrayList<>();

        // Step 2: Iterate through the array and count element frequencies
        for (long num : arr) {
            freqMap.put(num, freqMap.getOrDefault(num, 0) + 1);
        }

        // Step 3: Iterate through the hashmap to find duplicates
        for (Map.Entry<Long, Integer> entry : freqMap.entrySet()) {
            if (entry.getValue() > 1) {
                result.add(Math.toIntExact(entry.getKey()));
            }
        }

        // Step 4: If no duplicates found, add -1 to the result
        if (result.isEmpty()) {
            result.add(-1);
        }
        // Step 5: Sort the result
        Collections.sort(result);
        // Step 6: Return the result list containing duplicate elements or -1
        return result;
    }

    public static void main(String[] args) {
        long[] a = {1, 6, 5, 2, 3, 3, 2};
        List<Integer> duplicatesFound = duplicates(a);
        
        System.out.print("Duplicate elements: ");
        for (int element : duplicatesFound) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}
Python
def duplicates(arr):
    # Step 1: Create an empty dictionary to store element frequencies
    freq_map = {}
    result = []

    # Step 2: Iterate through the array and count element frequencies
    for num in arr:
        freq_map[num] = freq_map.get(num, 0) + 1

    # Step 3: Iterate through the dictionary to find duplicates
    for key, value in freq_map.items():
        if value > 1:
            result.append(key)

    # Step 4: If no duplicates found, add -1 to the result
    if not result:
        result.append(-1)
    # Step 5: Sort the result
    result.sort()
    # Step 6: Return the result list containing duplicate elements or -1
    return result

if __name__ == "__main__":
    a = [1, 6, 5, 2, 3, 3, 2]
    duplicates_found = duplicates(a)
    
    print("Duplicate elements:", end=" ")
    for element in duplicates_found:
        print(element, end=" ")
    print()
C#
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static List<int> Duplicates(long[] arr)
    {
        // Step 1: Create an empty dictionary to store element frequencies
        Dictionary<long, int> freqMap = new Dictionary<long, int>();
        List<int> result = new List<int>();

        // Step 2: Iterate through the array and count element frequencies
        foreach (long num in arr)
        {
            if (freqMap.ContainsKey(num))
                freqMap[num]++;
            else
                freqMap[num] = 1;
        }

        // Step 3: Iterate through the dictionary to find duplicates
        foreach (var entry in freqMap)
        {
            if (entry.Value > 1)
                result.Add((int)entry.Key);
        }

        // Step 4: If no duplicates found, add -1 to the result
        if (result.Count == 0)
            result.Add(-1);
        // Step 5: Sort the result
        result.Sort();
        // Step 6: Return the result list containing duplicate elements or -1
        return result;
    }

    static void Main(string[] args)
    {
        long[] a = { 1, 6, 5, 2, 3, 3, 2 };
        List<int> duplicatesFound = Duplicates(a);

        Console.Write("Duplicate elements: ");
        foreach (int element in duplicatesFound)
        {
            Console.Write(element + " ");
        }
        Console.WriteLine();
    }
}
JavaScript
function duplicates(arr) {
    // Step 1: Create an empty object to store element frequencies
    const freqMap = {};
    const result = [];

    // Step 2: Iterate through the array and count element frequencies
    for (let num of arr) {
        freqMap[num] = (freqMap[num] || 0) + 1;
    }

    // Step 3: Iterate through the object to find duplicates
    for (let key in freqMap) {
        if (freqMap[key] > 1) {
            result.push(Number(key));
        }
    }

    // Step 4: If no duplicates found, add -1 to the result
    if (result.length === 0) {
        result.push(-1);
    }
    // Step 5: Sort the result
    result.sort((a, b) => a - b);
    // Step 6: Return the result array containing duplicate elements or -1
    return result;
}

const a = [1, 6, 5, 2, 3, 3, 2];
const duplicatesFound = duplicates(a);

console.log("Duplicate elements: " + duplicatesFound.join(" "));

Output
Duplicate elements: 2 3 

Time Complexity: O(n Log n), Two traversals are needed. And then sorting. We can avoid sorting and have the time complexity as O(n) if order is not required.
Auxiliary Space: O(n), The extra space is used for the hash and array to be returned.

Approach 2( Using Auxiliary Array):

Since the numbers inside the array range from 0 to n-1 (inclusive), where n is the length of the array, we can utilize an auxiliary array of size n to record the frequency of each element. By iterating through we can found the duplicates easily.

Steps to implement the approach:
1. Range of Numbers: The numbers in the input array are assumed to be within the range 1 to n.

2. Auxiliary Array: We use an auxiliary array of size n+1 to keep track of the frequency of each number.

3. Counting Frequencies: As we iterate through the input array, we increment the count for each number in the auxiliary array.

4. Detecting Duplicates: If the count for any number exceeds 1, we add that number to our list of duplicates.


C++
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    vector<int> findDuplicates(vector<int>& nums) {
        int n = nums.size(); // Get the size of the input vector
        vector<int> arr(n + 1, 0); // Create an auxiliary vector of size n+1 initialized to 0
        vector<int> list; // Vector to store duplicates

        // Iterate through each number in the input vector
        for (int i : nums) {
            if (++arr[i] > 1) // Increment the count for this number and check if it is now a duplicate
                list.push_back(i); // If it is a duplicate, add it to the list
        }

        return list; // Return the list of duplicates
    }
};

int main() {
    Solution solution;
    vector<int> nums = {4, 3, 2, 7, 7, 2, 3, 1};
    vector<int> duplicates = solution.findDuplicates(nums);
    
    // Print the duplicates
    cout << "Duplicate elements are: ";
    for (int num : duplicates) {
        cout << num << " "; // Output: 2 3
    }
    cout << endl;

    return 0;
}
Java
import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List<Integer> findDuplicates(int[] nums)
    {
        int n = nums.length; // Get the length of the input
                             // array
      
        int[] arr = new int[n+1]; // Create an auxiliary
                                // array of size n+1
        List<Integer> list
            = new ArrayList<>(); // List to store duplicates

        // Iterate through each number in the input array
        for (int i : nums) {
            if (++arr[i] > 1) // Increment the count for 
                // this number and check if it is now a duplicate
              
                list.add(i); // If it is a duplicate, add it
                             // to the list
        }

        return list; // Return the list of duplicates
    }

    // Driver Code
    public static void main(String[] args)
    {
        Solution solution = new Solution();
        int[] nums = { 4, 3, 2, 7, 7, 2, 3, 1 };
        List<Integer> duplicates
            = solution.findDuplicates(nums);
        System.out.print("Duplicate elements are: ");
        for (int num : duplicates) {
            System.out.print(num + " ");
        }
        System.out.println(); // Output: Duplicate elements
                              // are: 2 3
    }
}
Python
class Solution:
    def findDuplicates(self, nums):
        n = len(nums)  # Get the length of the input list
        
        # Create an auxiliary list of size n+1 initialized to 0
        arr = [0] * (n+1)
        
        result = []  # List to store duplicates

        # Iterate through each number in the input list
        for num in nums:
            
            arr[num] += 1  # Increment the count for this number
            
            if arr[num] == 2:  # Check if it is now a duplicate
              
                result.append(num)  # If it is a duplicate,
                                    # add it to the list

        return result  # Return the list of duplicates


if __name__ == "__main__":
    solution = Solution()
    nums = [4, 3, 2, 7, 7, 2, 3, 1]
    duplicates = solution.findDuplicates(nums)
    print("Duplicate elements are: ", end="")
    for num in duplicates:
        print(num, end=" ")  # Output: 2 3
    print()
C#
using System;
using System.Collections.Generic;

public class Solution {
    public IList<int> FindDuplicates(int[] nums)
    {
        int n = nums.Length; // Get the length of the input
                             // array
      
        int[] arr = new int[n+1]; // Create an auxiliary
                                    // array of size n+1
      
        List<int> list
            = new List<int>(); // List to store duplicates

        // Iterate through each number in the input array
        foreach(int i in nums)
        {
            if (++arr[i] > 1) // Increment the count for this 
                  // number and check if it is now a duplicate
              
                list.Add(i); // If it is a duplicate, add it
                             // to the list
        }

        return list; // Return the list of duplicates
    }

    public static void Main(string[] args)
    {
        Solution solution = new Solution();
        int[] nums = { 4, 3, 2, 7, 7, 2, 3, 1 };
        IList<int> duplicates
            = solution.FindDuplicates(nums);

        // Print the duplicates
        Console.Write("Duplicate elements are: ");
        foreach(int num in duplicates)
        {
            Console.Write(num + " "); // Output: 2 3
        }
        Console.WriteLine();
    }
}

Output
Duplicate elements are: 7 2 3 

Time Complexity: O(n), since it iterates through the given array once.. So the time complexity is O(n).

Auxiliary Space: O(n), since we are using an auxiliary array to map frequencies.

All of the above approaches require extra space. Please refer the below article for constant extra space solution.

Duplicates in an array in O(n) and by using O(1) extra space | Set-2



Previous Article
Next Article

Similar Reads

Duplicates in an array in O(n) time and by using O(1) extra space | Set-3
Given an array of n elements which contains elements from 0 to n-1, with any of these numbers appearing any number of times. Find these repeating numbers in O(n) and using only constant memory space. It is required that the order in which elements repeat should be maintained. If there is no repeating element present then print -1. Examples: Input :
10 min read
Duplicates in an array in O(n) and by using O(1) extra space | Set-2
Given an array of n elements containing elements from 0 to n-1, with any of these numbers appearing any number of times, find these repeating numbers in O(n) and using only constant memory space. Example: Input: n = 7 , array = {1, 2, 3, 1, 3, 6, 6}Output: 1, 3 and 6.Explanation: Duplicate element in the array are 1 , 3 and 6Input: n = 6, array = {
7 min read
Remove duplicates from a string in O(1) extra space
Given a string str of lowercase characters, the task is to remove duplicates and return a resultant string without modifying the order of characters in the original string. Examples: Input: str = "geeksforgeeks" Output: geksfor Input: str = "characters" Output: chartes Approach: The idea is to use bits of a counter variable to mark the presence of
13 min read
Find maximum in a stack in O(1) time and O(1) extra space
Given a stack of integers. The task is to design a special stack such that the maximum element can be found in O(1) time and O(1) extra space. Examples: Given Stack : 2 5 1 64 --> Maximum So Output must be 64 when getMax() is called. Below are the different functions designed to push and pop elements from the stack. Push(x) : Inserts x at the to
11 min read
Find the maximum repeating number in O(n) time and O(1) extra space
Given an array of size n, the array contains numbers in the range from 0 to k-1 where k is a positive integer and k <= n. Find the maximum repeating number in this array. For example, let k be 10 the given array be arr[] = {1, 2, 2, 2, 0, 2, 0, 2, 3, 8, 0, 9, 2, 3}, the maximum repeating number would be 2. The expected time complexity is O(n) an
8 min read
Javascript Program to Rearrange positive and negative numbers in O(n) time and O(1) extra space
An array contains both positive and negative numbers in random order. Rearrange the array elements so that positive and negative numbers are placed alternatively. Number of positive and negative numbers need not be equal. If there are more positive numbers they appear at the end of the array. If there are more negative numbers, they too appear in t
3 min read
Design a dynamic stack using arrays that supports getMin() in O(1) time and O(1) extra space
Design a special dynamic Stack using an array that supports all the stack operations such as push(), pop(), peek(), isEmpty(), and getMin() operations in constant Time and Space complexities. Examples: Assuming the right to left orientation as the top to bottom orientation and performing the operations: Push(10): 10 is added to the top of the stack
15+ min read
Merge Sort with O(1) extra space merge and O(n log n) time [Unsigned Integers Only]
We have discussed Merge sort. How to modify the algorithm so that merge works in O(1) extra space and algorithm still works in O(n Log n) time. We may assume that the input values are integers only. Examples: Input : 5 4 3 2 1 Output : 1 2 3 4 5 Input : 999 612 589 856 56 945 243 Output : 56 243 589 612 856 945 999Recommended PracticeMerge SortTry
10 min read
Design a stack that supports getMin() in O(1) time and O(1) extra space
Design a Data Structure SpecialStack that supports all the stack operations like push(), pop(), isEmpty(), isFull() and an additional operation getMin() which should return minimum element from the SpecialStack. All these operations of SpecialStack must have a time and space complexity of O(1). Note: To implement SpecialStack, you should only use s
15+ min read
Count frequencies of all elements in array in O(1) extra space and O(n) time
Given an unsorted array of n integers that can contain integers from 1 to n. Some elements can be repeated multiple times and some other elements can be absent from the array. Count the frequency of all elements that are present and print the missing elements. Examples: Input: arr[] = {2, 3, 3, 2, 5}Output: Below are frequencies of all elements 1 -
15+ min read
Find duplicate in an array in O(n) and by using O(1) extra space
Given an array arr[] containing n integers where each integer is between 1 and (n-1) (inclusive). There is only one duplicate element, find the duplicate element in O(n) time complexity and O(1) space. Examples : Input : arr[] = {1, 4, 3, 4, 2} Output : 4Input : arr[] = {1, 3, 2, 1}Output : 1Recommended: Please try your approach on {IDE} first, bef
13 min read
Find pair for given sum in a sorted singly linked without extra space
Given a sorted singly linked list and a value x, the task is to find pair whose sum is equal to x. We are not allowed to use any extra space and expected time complexity is O(n). Examples: Input : head = 3-->6-->7-->8-->9-->10-->11 , x=17Output: (6, 11), (7, 10), (8, 9)Hint : We are allowed to modify original linked list A simple
12 min read
Shuffle 2n integers as a1-b1-a2-b2-a3-b3-..bn without using extra space | Set 2
Given an array arr[] consisting of 2* N elements in the form of { a1, a2, …, aN, b1, b2, ..., bN }, the task is to shuffle the array to {a1, b1, a2, b2, ..., an, b1} without using extra space. Examples : Input: arr[] = { 1, 3, 5, 2, 4, 6 }Output: 1 2 3 4 5 6Explanation: The output contains the elements in the form of { a1, b1, a2, b2, a3, b3 }. Inp
15 min read
Check if a number is palindrome or not without using any extra space | Set 2
Given a number ‘n’ and our goal is to find out it is palindrome or not without using any extra space. We can’t make a new copy of number. Examples: Input: n = 2332Output: Yes it is Palindrome.Explanation:original number = 2332reversed number = 2332Both are same hence the number is palindrome. Input: n=1111Output: Yes it is Palindrome. Input: n = 12
5 min read
Rearrange array in alternating positive & negative items with O(1) extra space | Set 2
Given an array of positive and negative numbers, arrange them in an alternate fashion such that every positive number is followed by negative and vice-versa. Order of elements in output doesn't matter. Extra positive or negative elements should be moved to end. Examples: Input : arr[] = {-2, 3, 4, -1} Output : arr[] = {-2, 3, -1, 4} OR {-1, 3, -2,
15+ min read
Sum of all substrings of a string representing a number | Set 2 (Constant Extra Space)
Given a string representing a number, we need to get the sum of all possible sub strings of this string. Examples : Input : s = "6759" Output : 8421 sum = 6 + 7 + 5 + 9 + 67 + 75 + 59 + 675 + 759 + 6759 = 8421 Input : s = "16" Output : 23 sum = 1 + 6 + 16 = 23Recommended PracticeSum of all substrings of a numberTry It! We have discussed a solution
7 min read
Clone a stack without using extra space | Set 2
Given a stack S, the task is to copy the content of the given stack S to another stack T maintaining the same order. Examples: Input: Source:- |5| |4| |3| |2| |1|Output: Destination:- |5| |4| |3| |2| |1| Input: Source:- |12| |13| |14| |15| |16|Output: Destination:- |12| |13| |14| |15| |16| Reversing the Stack-Based Approach: Please refer to the pre
7 min read
Javascript Program For Rearranging An Array In Maximum Minimum Form - Set 2 (O(1) extra space)
Given a sorted array of positive integers, rearrange the array alternately i.e first element should be the maximum value, second minimum value, third-second max, fourth-second min and so on. Examples: Input: arr[] = {1, 2, 3, 4, 5, 6, 7} Output: arr[] = {7, 1, 6, 2, 5, 3, 4} Input: arr[] = {1, 2, 3, 4, 5, 6} Output: arr[] = {6, 1, 5, 2, 4, 3} We ha
5 min read
Find duplicates in constant array with elements 0 to N-1 in O(1) space
Given a constant array of n elements which contains elements from 1 to n-1, with any of these numbers appearing any number of times. Find any one of these repeating numbers in O(n) and using only constant memory space. Examples: Input : arr[] = {1, 2, 3, 4, 5, 6, 3} Output : 3 As the given array is constant methods given in below articles will not
12 min read
Efficiently merging two sorted arrays with O(1) extra space and O(NlogN + MlogM)
Given two sorted arrays, arr1[] and arr2[], the task is to merge them in O(Nlog(N) + Mlog(M)) time with O(1) extra space into a sorted array where N is the size of the first array arr1[] and M is the size of the second array arr2[]. Examples: Input: arr1[] = {1, 5, 9, 10, 15, 20}, arr2[] = {2, 3, 8, 13} Output: 1 2 3 5 8 9 10 13 15 20 Input: arr1[]
9 min read
Print reverse of a Linked List without extra space and modifications
Given a Linked List, display the linked list in reverse without using recursion, stack or modifications to given list. Examples: Input: 1->2->3->4->5->NULLOutput: 5 4 3 2 1 Input: 10->5->15->20->24->NULLOutput: 24 20 15 5 10 Below are different solutions that are now allowed here as we cannot use extra space and modify
7 min read
Move all negative numbers to beginning and positive to end with constant extra space
An array contains both positive and negative numbers in random order. Rearrange the array elements so that all negative numbers appear before all positive numbers. Examples : Input: -12, 11, -13, -5, 6, -7, 5, -3, -6Output: -12 -13 -5 -7 -3 -6 11 6 5 Note: Order of elements is not important here. Naive approach: The idea is to sort the array of ele
15+ min read
Sort a binary array using one traversal and no extra space
Given a binary array, sort it using one traversal and no extra space Examples: Input: 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 0 Output: 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1Explanation: The output is a sorted array of 0 and 1 Input: 1 0 1 0 1 0 1 0 Output: 0 0 0 0 1 1 1 1Explanation: The output is a sorted array of 0 and 1 Sort a binary array u
10 min read
Rearrange positive and negative numbers with constant extra space
Given an array arr[] of integers, the task is to arrange them such that all negative integers appear before all the positive integers in the array without using any additional data structure like a hash table, arrays, etc. The order of appearance should be maintained. Examples: Input: arr[] = [12, 11, -13, -5, 6, -7, 5, -3, -6]Output: [-13, -5, -7,
15+ min read
k smallest elements in same order using O(1) extra space
We are given an array of n-elements you have to find k smallest elements from the array but they must be in the same order as they are in the given array and we are allowed to use only O(1) extra space. Examples: Input : arr[] = {4, 2, 6, 1, 5}, k = 3 Output : 4 2 1 Explanation : 1, 2 and 4 are three smallest numbers and 4 2 1 is their order in giv
8 min read
Shuffle 2n integers as a1-b1-a2-b2-a3-b3-..bn without using extra space
We have an array of the form {a0, a1, a2....., an, b0, b1, b2, .....bn} and our task is to rearrange the same in theform given below by using O(1) space- {a0, b0, a1, b1, a2, b2...........an, bn} Examples: Input : arr[] = {1, 3, 5, 7, 2, 4, 6, 8} Output : {1, 2, 3, 4, 5, 6, 7, 8} Input : arr[] = {11, 13, 15, 12, 14, 16} Output : {11, 12, 13, 14, 15
11 min read
Sum of K largest elements in BST using O(1) Extra space
Given a BST, the task is to find the sum of all elements greater than or equal to K-th largest element in O(1) space.Examples: Input : K = 3 8 / \ 7 10 / / \ 2 9 13 Output : 32 Explanation: 3rd largest element is 9 so sum of all elements greater than or equal to 9 are 9 + 10 + 13 = 32. Input : K = 2 8 / \ 5 11 / \ 2 7 \ 3 Output : 19 Explanation: 2
9 min read
Create Balanced Binary Tree using its Leaf Nodes without using extra space
Prerequisites: Binary Tree to Doubly Linked ListGiven a Binary Tree, the task is to create a Balanced Binary Tree from all the leaf nodes of the given Binary Tree. Examples: Input: Output: 7 8 5 9 10 Explanation: Required balanced binary tree will be: Input: Output: 13 21 29 7 15 Explanation: Required balanced binary tree is: 29 / \ 21 7 / \ 13 15
15 min read
Rearrange an array so that arr[i] becomes arr[arr[i]] with O(1) extra space
Given an array arr[] of size n where every element is in the range from 0 to n-1. Rearrange the given array so that arr[i] becomes arr[arr[i]]. This should be done with O(1) extra space Examples: Input: arr[] = {3, 2, 0, 1}Output: arr[] = {1, 0, 3, 2}Explanation: In the given array arr[arr[0]] is 1 so arr[0] in output array is 1arr[arr[1]] is 0 so
7 min read
Add two numbers represented by Linked List without any extra space
Given two numbers represented by two linked lists, write a function that returns sum list. The sum list is linked list representation of addition of two input numbers. Expected Space Complexity O(1). Examples: Input: L1 = 5 -> 6 -> 3 -> NULL L2 = 8 -> 4 -> 2 -> NULL Output: 1 -> 4 -> 0 -> 5 -> NULL Input: L1 = 1 ->
11 min read
Article Tags :
Practice Tags :
three90RightbarBannerImg