TriCoin Problem java

Hi I did the solution using binary search but failed test cases.
Here is my code.

Note : Code is working fine in my ide when giving inputs;
eg : input (coins) = 21 → output (height) = 6

public class CoinsTraingle {

``````// function 2
public static int getCoins(int height) {

int coins = 0;

// formula for getting sum of n natural no;
coins = height * (height + 1) / 2;
return coins;
}

// function 1
public static int heightOfTraingle(int coins) {

// Edge case: Triangle cannot be formed with 0 or 1 coin
if (coins <= 1) {
return 0;
}

int start = 0;
int end = coins;

int mid = start + (end - start) / 2;

int ans = -1;

while (start < end) {

// getCoins fn that takes height param
if (getCoins(mid) == coins) {
return mid;
}

if (getCoins(mid) < coins) {
ans = mid;
start = mid + 1;
} else {
end = mid;
}

mid = start + (end - start) / 2;
}
return ans;
}

public static void main(String[] args) throws java.lang.Exception {
Scanner sc = new Scanner(System.in);

// taking input
System.out.println("Enter no of coins > 1:");
int coins = sc.nextInt();

// giving output
System.out.print("Max possible height of traingle is ");
System.out.println(heightOfTraingle(coins));
sc.close();

}
``````

}