VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-all-triplets-in-a-sorted-array-that-forms-geometric-progression/

⇱ Find all triplets in a sorted array that forms Geometric Progression - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find all triplets in a sorted array that forms Geometric Progression

Last Updated : 20 Mar, 2023

Given a sorted array of distinct positive integers, print all triplets that forms Geometric Progression with integral common ratio.
A geometric progression is a sequence of numbers where each term after the first is found by multiplying the previous one by a fixed, non-zero number called the common ratio. For example, the sequence 2, 6, 18, 54,... is a geometric progression with common ratio 3.

Examples: 

Input: 
arr = [1, 2, 6, 10, 18, 54]
Output: 
2 6 18
6 18 54

Input: 
arr = [2, 8, 10, 15, 16, 30, 32, 64]
Output: 
2 8 32
8 16 32
16 32 64

Input: 
arr = [ 1, 2, 6, 18, 36, 54]
Output: 
2 6 18
1 6 36
6 18 54

The idea is to start from the second element and fix every element as middle element and search for the other two elements in a triplet (one smaller and one greater). For an element arr[j] to be middle of geometric progression, there must exist elements arr[i] and arr[k] such that - 

arr[j] / arr[i] = r and arr[k] / arr[j] = r
where r is an positive integer and 0 <= i < j and j < k <= n - 1

Below is the implementation of above idea


Output
1 2 4
1 4 16

Time complexity of above solution is O(n2) as for every j, we are finding i and k in linear time.

Auxiliary Space: O(1), since we not used any extra space.

Comment
Article Tags:
Article Tags: