# Absolute difference of all pairwise consecutive elements in a Set

• Difficulty Level : Basic
• Last Updated : 28 Dec, 2021

Given a set of integers of N elements. The task is to print the absolute difference of all of the pairwise consecutive elements in a set. Pairwise consecutive pairs of a set of size N are accessed using iterator

Example:

Input: s = {8, 5, 4, 3, 15, 20}

Output: 1 1 3 7 5

Explanation:

The set is : 3 4 5 8 15 20
The difference between 4 and 3 is 1
The difference between 5 and 4 is 1
The difference between 8 and 5 is 3
The difference between 15 and 8 is 7
The difference between 20 and 15 is 5

Input: s = {5, 10, 15, 20}

Output: 5 5 5

Explanation:
The set is : 5 10 15 20
The difference between 10 and 5 is 5
The difference between 15 and 10 is 5
The difference between 20 and 15 is 5

The article Absolute Difference of all pairwise consecutive elements in an array covers the approach to find the absolute difference of all pairwise consecutive elements in an array.

Approach: This problem can be solved using two pointer algorithm. We will be using iterators as the two pointers to iterate the set and check for a given condition. Follow the steps below to understand the solution to the above problem:

1. Declare two iterators itr1 and itr2 and both of them point to the beginning element of the set.
2. Increment itr2 i.e. itr2++ at the beginning of the loop.
3. Subtract values pointed by itr1 and itr2 i.e. *itr2 – *itr1.
4. Increment itr1 at the end of the loop, this means *itr1++.
5. If itr2 reaches the end of the set, then break the loop and exit.

In C++, the set elements are sorted and duplicates are removed before storing in the memory. Therefore, in the below C++ program the difference between the pairwise consecutive elements is computed on the sorted set as explained in the above examples.

Below is the C++ program implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach``#include ``using` `namespace` `std;` `// Function to calculate the``// difference of consecutive pairwise``// elements in a set``void` `display_difference(set<``int``> s)``{``    ``// Declaring the set iterator``    ``set<``int``>::iterator itr;` `    ``// Printing difference between``    ``// consecutive elements in a set``    ``set<``int``>::iterator itr1 = s.begin();``    ``set<``int``>::iterator itr2 = s.begin();``    ``while` `(1) {``        ``itr2++;``        ``if` `(itr2 == s.end())``            ``break``;``        ``cout << (*itr2 - *itr1) << ``" "``;``        ``itr1++;``    ``}``}``// Driver code``int` `main()``{``    ``// Declaring the set``    ``set<``int``> s{ 8, 5, 4, 3, 15, 20 };` `    ``// Invoking the display_difference()``    ``// function``    ``display_difference(s);``    ``return` `0;``}`

## Java

 `// Java program to implement``// the above approach``import` `java.util.ArrayList;``import` `java.util.HashSet;``import` `java.util.List;``import` `java.util.TreeSet;` `// Function to calculate the``// difference of consecutive pairwise``// elements in a set``class` `GFG {``  ``static` `void` `display_difference(HashSet S) {` `    ``// Printing difference between``    ``// consecutive elements in a set``    ``TreeSet s = ``new` `TreeSet(S);` `    ``int` `itr1 = ``0``;``    ``int` `itr2 = ``0``;``    ``while` `(``true``) {``      ``itr2 += ``1``;``      ``;``      ``if` `(itr2 >= s.size()) {``        ``break``;``      ``}``      ``List temp = ``new` `ArrayList();``      ``temp.addAll(s);``      ``System.out.print((temp.get(itr2) - temp.get(itr1)) + ``" "``);``      ``itr1 += ``1``;``    ``}``  ``}` `  ``// Driver code` `  ``public` `static` `void` `main(String args[])``  ``{``    ` `    ``// Declaring the set``    ``HashSet s = ``new` `HashSet();``    ``s.add(``8``);``    ``s.add(``5``);``    ``s.add(``4``);``    ``s.add(``3``);``    ``s.add(``15``);``    ``s.add(``20``);` `    ``// Invoking the display_difference()``    ``// function``    ``display_difference(s);` `  ``}``}` `// This code is contributed by gfgking`

## Python3

 `# Python 3 program to implement``# the above approach` `# Function to calculate the``# difference of consecutive pairwise``# elements in a set``def` `display_difference(s):` `    ``# Printing difference between``    ``# consecutive elements in a set``    ``itr1 ``=` `0``    ``itr2 ``=` `0``    ``while` `(``1``):``        ``itr2 ``+``=` `1``        ``if` `(itr2 >``=` `len``(s)):``            ``break``        ``print``((``list``(s)[itr2] ``-` `list``(s)[itr1]), end``=``" "``)``        ``itr1 ``+``=` `1` `# Driver code``if` `__name__ ``=``=` `"__main__"``:` `    ``# Declaring the set``    ``s ``=` `set``([``8``, ``5``, ``4``, ``3``, ``15``, ``20``])` `    ``# Invoking the display_difference()``    ``# function``    ``display_difference(s)` `    ``# This code is contributed by ukasp.`

## C#

 `// C# program to implement``// the above approach` `// Function to calculate the``// difference of consecutive pairwise``// elements in a set``using` `System;``using` `System.Collections.Generic;``public` `class` `GFG``{``  ``static` `void` `display_difference(HashSet<``int``> S)``  ``{` `    ``// Printing difference between``    ``// consecutive elements in a set``    ``SortedSet<``int``> s = ``new` `SortedSet<``int``>(S);` `    ``int` `itr1 = 0;``    ``int` `itr2 = 0;``    ``while` `(``true``) {``      ``itr2 += 1;``      ``;``      ``if` `(itr2 >= s.Count) {``        ``break``;``      ``}``      ``List<``int``> temp = ``new` `List<``int``>();``      ``temp.AddRange(s);``      ``Console.Write((temp[itr2] - temp[itr1]) + ``" "``);``      ``itr1 += 1;``    ``}``  ``}` `  ``// Driver code``  ``public` `static` `void` `Main(String []args)``  ``{` `    ``// Declaring the set``    ``HashSet<``int``> s = ``new` `HashSet<``int``>();``    ``s.Add(8);``    ``s.Add(5);``    ``s.Add(4);``    ``s.Add(3);``    ``s.Add(15);``    ``s.Add(20);` `    ``// Invoking the display_difference()``    ``// function``    ``display_difference(s);``  ``}``}` `// This code is contributed by Rajput-Ji.`

## Javascript

 ``

Output:

1 1 3 7 5

Time Complexity: O(n)
Auxiliary Space: O(n)

My Personal Notes arrow_drop_up