class Solution {
//one thing to note here is we have to get the values in increasing order,
//the current values of nums[i] is the max value it can have after which it can only get a lower value.
//start from the second last value in nums[] because last values is already the largest it can be
public int minOperations(int[] nums) {
int count = 0;
//compare value at i-1th index with value at i, index if it is greater, update the value at i-1th index with its greatest divisor, if you get 1 as greatest divisor return -1;
for (int i = nums.length-1; i >0; i--) {
while (nums[i] < nums[i-1]) {
int g = gd(nums[i-1]);
if(g ==1){
return -1;
}
nums[i-1] = g;
count++;
}
}
return count;
}
// it will give the greatest possible divisor else 1
public int gd(int n) {
int d = 1;
for (int i = 2; i<=Math.sqrt(n); i++) {
if (n % i == 0) {
return i;
}
}
return d;
}
}
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)