Given an array A[] of measurement N, the duty is to search out the minimal variety of operations required to make all the weather of the array zero. In a single step, the next operations are finished on a subarray of the given array:
 Any integer X is chosen
 If a component is larger than X (A[i] > X), the array component is diminished by the worth A[i] â€“ X
 (A[i] â€“ X) have to be the identical for all the weather that are diminished.
Examples:
Enter: A[] = {4, 3, 4}, N = 3
Output: 2
Clarification: Following operations are carried out on the array:
For the primary operation, select your entire array because the subarray, take X = 3. Array turns into A[] = {3, 3, 3}.
For the second operation, select your entire array because the subarray, take X = 0. Array turns into A[] = {0, 0, 0}.
Thus, 2 steps are required to make all parts of A equal to zero.Enter: A[] = {4, 5, 8, 3, 15, 5, 4, 6, 8, 10, 45}, N = 11
Output: 8
Â
Method: The duty could be solved utilizing the next observations:Â
 To fulfill the final situation, X ought to be such a worth that the array parts which might be diminished are all identical.
 To attenuate the operations, the whole array ought to be chosen every time and X ought to be chosen within the following method:
 For the primary iteration, X is the 2nd distinct highest quantity. For the second iteration, X is the third distinct highest quantity and so forth
 Therefore the minimal whole operations would be the rely of distinct parts current within the array
Comply with the steps beneath to resolve the above drawback:
 Declare a set to retailer the rely of distinctive parts.
 Iterate over the weather of the array utilizing a loop:
 If an array component say A[i], will not be equal to zero insert it within the set.
 the dimensions of the set denotes the variety of distinctive parts.
 Return the dimensions of the set as the ultimate reply.
Under is the implementation of the above strategy:
C++

Time Complexity: O(N)
Auxiliary House: O(N)