# Delete array elements which are smaller than next or become smaller

• Difficulty Level : Easy

Given an array arr[] and a number k. The task is to delete k elements which are smaller than next element (i.e., we delete arr[i] if arr[i] < arr[i+1]) or become smaller than next because next element is deleted.

Examples:

```Input       : arr[] = { 3, 100, 1 }
k = 1
Output      : 100, 1
Explanation : arr[0] < arr[1] means 3 is less than
100, so delete 3

Input       : arr[] = {20, 10, 25, 30, 40}
k = 2
Output      : 25 30 40
Explanation : First we delete 10 because it follows
arr[i] < arr[i+1]. Then we delete 20
because 25 is moved next to it and it
also starts following the condition.

Input       : arr[] = { 23, 45, 11, 77, 18}
k = 3
Output      : 77, 18
Explanation : We delete 23, 45 and 11 as they follow
the condition arr[i] < arr[i+1]```

Approach: Stack is used to solving this problem. First we push arr[0] in stack S and then initialize count as 0, then after traverse a loop from 1 to n and then we check that s.top() < arr[i] if condition is true then we pop the element from stack and increase the count if count == k then we stop the loop and then store the value of stack in another array and then print that array.

## C++

 `// C++ program to delete elements from array.` `#include ` `using` `namespace` `std;`   `// Function for deleting k elements` `void` `deleteElements(``int` `arr[], ``int` `n, ``int` `k)` `{ ` `    ``// Create a stack and push arr[0]` `    ``stack<``int``> s;` `    ``s.push(arr[0]);`   `    ``int` `count = 0;` `    `  `    ``// traversing a loop from i = 1 to n` `    ``for` `(``int` `i=1; i v(m); ``// Size of vector is m` `    ``while` `(!s.empty()) {` `        `  `        ``// push element from stack to vector v` `        ``v[--m] = s.top();` `        ``s.pop();` `    ``}` `    `  `    ``// printing result` `    ``for` `(``auto` `x : v)` `        ``cout << x << ``" "``;` `        `  `    ``cout << endl;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `n = 5, k = 2;` `    ``int` `arr[] = {20, 10, 25, 30, 40}; ` `    ``deleteElements(arr, n, k);` `    ``return` `0;` `}`

## Java

 `import` `java.util.*;`   `//Java program to delete elements from array.` `class` `GFG {`   `// Function for deleting k elements` `    ``static` `void` `deleteElements(``int` `arr[], ``int` `n, ``int` `k) {` `        ``// Create a stack and push arr[0]` `        ``Stack s = ``new` `Stack<>();` `        ``s.push(arr[``0``]);`   `        ``int` `count = ``0``;`   `        ``// traversing a loop from i = 1 to n` `        ``for` `(``int` `i = ``1``; i < n; i++) {`   `            ``// condition for deleting an element` `            ``while` `(!s.empty() && s.peek() < arr[i]` `                    ``&& count < k) {` `                ``s.pop();` `                ``count++;` `            ``}`   `            ``s.push(arr[i]);` `        ``}`   `        ``// Putting elements of stack in a vector` `        ``// from end to begin.` `        ``int` `m = s.size();` `        ``Integer[] v = ``new` `Integer[m]; ``// Size of vector is m` `        ``while` `(!s.empty()) {`   `            ``// push element from stack to vector v` `            ``v[--m] = s.peek();` `            ``s.pop();` `        ``}`   `        ``// printing result` `        ``for` `(Integer x : v) {` `            ``System.out.print(x + ``" "``);` `        ``};`   `        ``System.out.println(``""``);` `    ``}`   `// Driver code` `    ``public` `static` `void` `main(String[] args) {` `        ``int` `n = ``5``, k = ``2``;` `        ``int` `arr[] = {``20``, ``10``, ``25``, ``30``, ``40``};` `        ``deleteElements(arr, n, k);` `    ``}` `}` `// This code is contributed by PrinciRaj1992`

## Python3

 `# Function to delete elements` `def` `deleteElements(arr, n, k):` `    `  `    ``# create an empty stack st` `    ``st ``=` `[]` `    ``st.append(arr[``0``])` `    `  `    ``# index to maintain the top ` `    ``# of the stack` `    ``top ``=` `0` `    ``count ``=` `0`   `    ``for` `i ``in` `range``(``1``, n):` `        `  `        ``# pop till the present element ` `        ``# is greater than stack's top` `        ``# element` `        ``while``(``len``(st) !``=` `0` `and` `count < k` `                   ``and` `st[top] < arr[i]):` `            ``st.pop()` `            ``count ``+``=` `1` `            ``top ``-``=` `1`   `        ``st.append(arr[i])` `        ``top ``+``=` `1`   `    ``# print the remaining elements` `    ``for` `i ``in` `range``(``0``, ``len``(st)):` `        ``print``(st[i], ``" "``, end``=``"")`   `# Driver code` `k ``=` `2` `arr ``=` `[``20``, ``10``, ``25``, ``30``, ``40``] ` `deleteElements(arr, ``len``(arr), k)`   `# This code is contributed by himan085.`

## C#

 `// C# program to delete elements from array.` `using` `System;` `using` `System.Collections.Generic;`   `class` `GFG {`   `    ``// Function for deleting k elements` `    ``static` `void` `deleteElements(``int` `[]arr, ``int` `n, ``int` `k) ` `    ``{` `        ``// Create a stack and push arr[0]` `        ``Stack<``int``> s = ``new` `Stack<``int``>();` `        ``s.Push(arr[0]);`   `        ``int` `count = 0;`   `        ``// traversing a loop from i = 1 to n` `        ``for` `(``int` `i = 1; i < n; i++)` `        ``{`   `            ``// condition for deleting an element` `            ``while` `(s.Count != 0 && s.Peek() < arr[i]` `                    ``&& count < k) ` `            ``{` `                ``s.Pop();` `                ``count++;` `            ``}`   `            ``s.Push(arr[i]);` `        ``}`   `        ``// Putting elements of stack in a vector` `        ``// from end to begin.` `        ``int` `m = s.Count;` `        ``int``[] v = ``new` `int``[m]; ``// Size of vector is m` `        ``while` `(s.Count != 0) ` `        ``{`   `            ``// push element from stack to vector v` `            ``v[--m] = s.Peek();` `            ``s.Pop();` `        ``}`   `        ``// printing result` `        ``foreach` `(``int` `x ``in` `v) ` `        ``{` `            ``Console.Write(x + ``" "``);` `        ``};`   `        ``Console.Write(``""``);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main() ` `    ``{` `        ``int` `n = 5, k = 2;` `        ``int` `[]arr = {20, 10, 25, 30, 40};` `        ``deleteElements(arr, n, k);` `    ``}` `}`   `// This code is contributed by 29AjayKumar`

## Javascript

 ``

Output:

`25 30 40 `

Time Complexity: O(n2)

Auxiliary Space: O(n + m)

My Personal Notes arrow_drop_up
Recommended Articles
Page :