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)