Array est une structure de données spécialement conçue pour conserver le même type de données dans une série de zones mémoire. Le principal avantage de l’utilisation des tableaux est que nous pouvons y accéder depuis n’importe quelle position en utilisant les paramètres d’index. Cependant, l'insertion et la suppression de données nécessitent des opérations séquentielles, ce qui fera de cette structure de données une structure de données linéaire. Nous pouvons simplement utiliser l'index ou le numéro de position entre crochets pour extraire des éléments du tableau. Cet article montrera comment lire les k nombres les plus proches d'un tableau en C++.
Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69] We have another number k = 4 The number of elements in A is 9 The output will be the last k elements from A, which are: 12, 35, 74, 69
Nous avons les éléments à l'intérieur du tableau pour chaque tableau, et la quantité n est également cruciale. Le nombre n indique le nombre d'éléments valides dans un tableau. La taille du tableau peut ne pas correspondre au n. un maximum de Z éléments, seuls n d'entre eux doivent être valides ; les emplacements restants sont vides. Dans ce cas, k doit être inférieur ou égal à n pour récupérer le kième élément du tableau. nous devons l'inspecter. Pour une meilleure compréhension, jetons un œil à l'algorithme.
Lisez un tableau A en entrée. Accepte le nombre d'éléments simultanément : n et k pour lire les k premiers éléments de A
Créez un tableau vide B
Si k pour moi dans la plage 0 à k - 1, fais B[ je ] = A[ n - k + je ] fin pour
fin si
Retour à B
#include <iostream> # define Z 50 using namespace std; void displayArr(int arr[], int n){ for( int i = 0; i < n; i++ ){ cout << arr[ i ] << ", "; } cout << endl; } void pickLastKElement( int A[], int n, int B[], int &m, int k) { if( k <= n ){ for( int i = 0; i < k; i++ ) { B[ i ] = A[ n - k + i ]; m = m + 1; } } } int main() { int A[ Z ] = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; int n = 12; int B[ Z ]; int m = 0; cout << "Given Array: "; displayArr( A, n ); pickLastKElement( A, n, B, m, 7 ); cout << "The last 7 element from A: "; displayArr( B, m ); m = 0; pickLastKElement( A, n, B, m, 10 ); cout << "The last 10 element from A: "; displayArr( B, m ); }
Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Dans la méthode ci-dessus, un tableau statique est utilisé pour stocker et récupérer des éléments du tableau. La même fonctionnalité peut également être obtenue en utilisant des vecteurs. Les vecteurs font partie du STL C++ et sont des tableaux dynamiques. Jetons un coup d'oeil au code. L'algorithme reste inchangé.
#include <iostream> #include <vector> # define Z 50 using namespace std; void displayArr( vector<int> v ){ for( int i = 0; i < v.size() ; i++ ){ cout << v[ i ] << ", "; } cout << endl; } vector<int> pickLastKElement( vector<int> A, int k) { vector<int> B; if( k <= A.size() ){ for( int i = 0; i < k; i++ ) { B.push_back( A[ A.size() - k + i ] ); } } return B; } int main() { vector<int> A = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; vector<int> B; cout << "Given Array: "; displayArr( A ); B = pickLastKElement( A, 7 ); cout << "The last 7 element from A: "; displayArr( B ); B = pickLastKElement( A, 10 ); cout << "The last 10 element from A: "; displayArr( B ); }
Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
La dernière façon consiste à créer manuellement un vecteur vide et à copier les éléments un par un. Cependant, nous pouvons directement utiliser un itérateur vectoriel pour copier les k derniers éléments du constructeur vectoriel. Jetons un coup d'œil au code pour comprendre ce concept.
#include <iostream> #include <vector> # define Z 50 using namespace std; void displayArr( vector<int> v ){ for( int i = 0; i < v.size() ; i++ ){ cout << v[ i ] << ", "; } cout << endl; } vector<int> pickLastKElement( vector<int> A, int k) { vector<int> B( A.begin() + (A.size() - k), A.end() ); return B; } int main() { vector<int> A = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; vector<int> B; cout << "Given Array: "; displayArr( A ); B = pickLastKElement( A, 7 ); cout << "The last 7 element from A: "; displayArr( B ); B = pickLastKElement( A, 10 ); cout << "The last 10 element from A: "; displayArr( B ); }
Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Ici, le vecteur B est créé en utilisant les k derniers éléments du vecteur A. Utilisez la méthode begin() pour obtenir l'adresse du premier élément et utilisez le décalage begin() (A.size() − k) comme point final, afin qu'il pointe vers les k derniers éléments.
Cet article explique trois façons différentes de lire ou de sélectionner les n derniers nombres d'un tableau donné. Les deuxième et troisième solutions sont basées sur des vecteurs au lieu du tableau statique par défaut utilisé par la première approche. Les réponses aux deux premières questions sont simples. Nous utilisons une boucle for pour copier les k derniers éléments un par un. La dernière technique est la plus simple et utilise un constructeur de vecteur pour générer un vecteur en copiant les composants à l'aide d'un itérateur d'un autre vecteur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!