Un vector disperso es un vector que tiene una gran cantidad de ceros, por lo que se necesita un espacio no deseado para almacenar estos ceros.
La tarea es almacenar un vector disperso dado de manera eficiente sin almacenar los ceros.
Ejemplos:
Input: vector = { 2, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 5 } Output: {2, 3, 4, 1, 5, 4, 2, 3, 1, 5}
Enfoque:
para almacenar el vector disperso de manera eficiente, se puede usar un vector de pares . El primer elemento del par será el índice del elemento vectorial disperso (que no es cero) y el segundo elemento será el elemento real.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to store sparse vectors // with the help of vector of pair #include <bits/stdc++.h> using namespace std; // Store the sparse vector // as a vector of pairs vector<pair<int, int> > convertSparseVector(vector<int> v) { vector<pair<int, int> > res; for (int i = 0; i < v.size(); i++) { if (v[i] != 0) { res.push_back(make_pair(i, v[i])); } } return res; } // Print the vector of pairs void print(vector<pair<int, int> > res) { for (auto x : res) { cout << "index: " << x.first << " -> value: " << x.second << endl; } } // Driver function int main() { // Get the sparse vector vector<int> v{ 2, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 5 }; // Get the stored vector of pairs vector<pair<int, int> > res = convertSparseVector(v); // Print the vector of pairs print(res); return 0; }
Java
// Java program to store sparse vectors // with the help of ArrayList of pair import java.util.ArrayList; class GFG{ static class Pair { int first, second; public Pair(int first, int second) { this.first = first; this.second = second; } } // Store the sparse ArrayList // as a ArrayList of pairs static ArrayList<Pair> convertSparseVector(int[] v) { ArrayList<Pair> res = new ArrayList<>(); for(int i = 0; i < v.length; i++) { if (v[i] != 0) { res.add(new Pair(i, v[i])); } } return res; } // Print the ArrayList of pairs static void print(ArrayList<Pair> res) { for(Pair x : res) { System.out.printf("index: %d -> value: %d\n", x.first, x.second); } } // Driver code public static void main(String[] args) { // Get the sparse ArrayList int[] v = { 2, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 5 }; // Get the stored ArrayList of pairs ArrayList<Pair> res = convertSparseVector(v); // Print the ArrayList of pairs print(res); } } // This code is contributed by sanjeev2552
Python3
# Python3 program to store sparse vectors # with the help of vector of pair # Store the sparse vector # as a vector of pairs def convertSparseVector(v): res = [] for i in range(len(v)): if (v[i] != 0): res.append([i, v[i]]) return res # Print the vector of pairs def printf(res): for x in res: print("index:", x[0], " -> value:", x[1]) # Driver Code if __name__ == '__main__': # Get the sparse vector v = [2, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 5] # Get the stored vector of pairs res = convertSparseVector(v) # Print the vector of pairs printf(res) # This code is contributed by Surendra_Gangwar
Javascript
<script> // JavaScript program to store sparse vectors // with the help of vector of pair // Store the sparse vector // as a vector of pairs function convertSparseVector(v) { let res = []; for (let i = 0; i < v.length; i++) { if (v[i] != 0) { res.push([i, v[i]]); } } return res; } // Print the vector of pairs function print(res) { for (let x of res) { document.write("index: " + x[0] + " -> value: " + x[1] + "<br>"); } } // Driver function // Get the sparse vector let v = [2, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 5]; // Get the stored vector of pairs let res = convertSparseVector(v); // Print the vector of pairs print(res); // This code is contributed by _saurabh_jaiswal </script>
Producción:
index: 0 -> value: 2 index: 5 -> value: 3 index: 7 -> value: 4 index: 11 -> value: 1 index: 12 -> value: 5 index: 22 -> value: 4 index: 26 -> value: 2 index: 33 -> value: 3 index: 37 -> value: 1 index: 42 -> value: 5