# How to store a Sparse Vector efficiently?

• Last Updated : 07 Jul, 2021

A sparse vector is a vector that has a large number of zeros so it takes unwanted space to store these zeroes.
The task is to store a given sparse vector efficiently without storing the zeros.

Examples:

```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}```

Approach:
To store the sparse vector efficiently, a vector of pairs can be used. The First element of pair will be the index of sparse vector element(which is non-zero) and the second element will be the actual element.

Below is the implementation of the above approach:

## C++

 `// C++ program to store sparse vectors``// with the help of vector of pair` `#include ``using` `namespace` `std;` `// Store the sparse vector``// as a vector of pairs``vector >``convertSparseVector(vector<``int``> v)``{``    ``vector > 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 > 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 > 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 convertSparseVector(``int``[] v)``{``    ``ArrayList 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 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 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

 ``
Output:
```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```

My Personal Notes arrow_drop_up