Given a non-negative number find the cube root of a number using the binary search approach.
Examples :
Input: x = 27 Output: 3 Explanation: The cube root of 16 is 4. Input: x = 120 Output: 4 Explanation: The cube root of 120 lies in between 4 and 5 so floor of the cube root is 4.
Naive Approach:
- Check the cube of every element till n and store the answer till the cube is smaller or equal to the n
Java
// Java Program to Find the cube root// of given number using Naive approachimport java.io.*;class GFG { static int cuberoot(int n) { int ans = 0; for (int i = 1; i <= n; ++i) { // checking every number cube if (i * i * i <= n) { ans = i; } } return ans; } public static void main(String[] args) { // Number int number = 27; // Checking number int cuberoot = cuberoot(number); System.out.println(cuberoot); }} |
3
Complexity:
SpaceComplexity: O(1) TimeComplexity: O(n)
Efficient Approach (Binary Search):
Binary Search used Divide and Conquer approach that makes the complexity is O(log n).
Algorithm:
- Initialize left=0 and right =n
- Calculate mid=left+(right-left)/2
- If mid*mid*mid is equal to the number return the mid
- If mid*mid*mid is less than the number store the mid in ans and increase left=mid+1
- If mid*mid*mid is more than the number and decrease the right=mid-1
- Return the answer
Implementation:
Java
// Java Program to Find the cube root// of given number using Binary Searchimport java.io.*;import java.util.*;class GFG { // Function to find cuberoot static int cuberoot(int number) { // Lower bound int left = 1; // Upper bound int right = number; int ans = 0; while (left <= right) { // Finding the mid value int mid = left + (right - left) / 2; // Checking the mid value if (mid * mid * mid == number) { return mid; } // Shift the lower bound if (mid * mid * mid < number) { left = mid + 1; ans = mid; } // Shift the upper bound else { right = mid - 1; } } // Return the ans return ans; } public static void main(String[] args) { int number = 215; System.out.println(cuberoot(number)); }} |
5
Complexity:
SpaceComplexity: O(1) TimeComplexity: O(log n)

… [Trackback]
[…] Read More Info here to that Topic: geeksforgeeks.org/java-program-to-find-the-cube-root-of-a-given-number-using-binary-search/ […]
… [Trackback]
[…] Here you can find 19058 more Information to that Topic: geeksforgeeks.org/java-program-to-find-the-cube-root-of-a-given-number-using-binary-search/ […]