Grade 9 · One-dimensional arrays (vectors)Citește în română
Deleting the element at a position
Original: Ștergerea elementului de pe o poziție
O(n)C++1744 lines1 example
The idea
To delete the element at position poz, we shift the elements after it one position to the left, from left to right (v[i] = v[i + 1]), then n decreases by 1. n, the n elements and poz (1 <= poz <= n) are read.
Original description (Romanian)
Ca să ștergem elementul de pe poziția poz, mutăm elementele de după el cu o poziție la stânga, de la stânga spre dreapta (v[i] = v[i + 1]), apoi n scade cu 1. Se citesc n, cele n elemente și poz (1 <= poz <= n).
- Complexity
- O(n)
- Grade
- Grade 9 (Clasa a IX-a)
Examples
Example 1
Input
5 1 2 3 4 5 2
Expected output
1 3 4 5
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Ștergerea elementului de pe o poziție
* Clasa: 9
* Capitol: Tablouri unidimensionale (vectori)
* Descriere: Ca să ștergem elementul de pe poziția poz, mutăm elementele de
* după el cu o poziție la stânga, de la stânga spre dreapta
* (v[i] = v[i + 1]), apoi n scade cu 1.
* Se citesc n, cele n elemente și poz (1 <= poz <= n).
* Complexitate: O(n)
*
* Exemplu
* Intrare:
* 5
* 1 2 3 4 5
* 2
* Ieșire: 1 3 4 5
*/
#include <iostream>
using namespace std;
int v[1001];
int main()
{
int n, poz;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> v[i];
}
cin >> poz;
for (int i = poz; i < n; i++)
{
v[i] = v[i + 1];
}
n--;
for (int i = 1; i <= n; i++)
{
cout << v[i] << ' ';
}
cout << '\n';
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.