Closest Divisors LeetCode solution in Java
1class Solution {2public int[] closestDivisors(int num) {3int ans[] = new int[2];4double a = Math.sqrt(num + 1);5double b = Math.sqrt(num + 2);67if (num == 1) {8ans[0] = 1;9ans[1] = 2;10return ans;11} else if (a % 1 == 0) {12ans[0] = (int) a;13ans[1] = (int) b;14return ans;15} else if (b % 1 == 0) {16ans[0] = (int) b;17ans[1] = (int) b;18return ans;19} else {20int m = (int) Math.sqrt(num);21int diff1 = Integer.MAX_VALUE;22int y = 0, z = 0, w = 0, f = 0;2324for (int i = 2; i <= m; i++) {25if ((num + 1) % i == 0) {26y = i;27z = (num + 1) / y;28int r = Math.abs(y - z);2930if (r < diff1) {31diff1 = r;32}33}34}3536int diff2 = Integer.MAX_VALUE;3738for (int i = 2; i <= m; i++) {39if ((num + 2) % i == 0) {40w = i;41f = (num + 2) / w;42int r = Math.abs(w - f);4344if (r < diff2) {45diff2 = r;46}47}48}4950if (diff1 < diff2) {51ans[0] = y;52ans[1] = z;53return ans;54} else {55ans[0] = w;56ans[1] = f;57return ans;58}59}60}61}