给定一个正整数 n ,请你算出这个数开立方根的结果。
结果向下取整。
数据范围:
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ int cuberoot(int n) { // write code here if(n == 1){ return 1; } int l = 1; int r = n; while(l <= r){ int mid = (l + r) / 2; int m = n / mid; m /= mid; int m1 = n / (mid+1); m1 /= mid + 1; if(mid <= m && (mid+1) > m1) { return mid; } if(mid > m){ r = mid - 1; } if(mid < m){ l = mid + 1; } } return -1; } };
int cuberoot(int n ) { int i; for(i=0;i<=n;i++) if(i*i*i>=n) break; if(i*i*i==n) return i; else return i-1; }
# -*- coding: utf-8 -*- # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param n int整型 # @return int整型 # class Solution: """ 题目: https://www.nowcoder.com/practice/ada3edb4700143f4917d3e631ad2481a?tpId=196&tqId=40527&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D196&difficulty=undefined&judgeStatus=3&tags=&title= 算法: 二分法寻找立方根 复杂度: 时间复杂度:O(logn) 空间复杂度:O(1) """ def cuberoot(self, n): # write code here left, right = 1, n while left < right: mid = left + (right - left) / 2 if mid * mid * mid == n: return mid elif mid * mid * mid > n: right = mid - 1 else: left = mid + 1 return left if left * left * left <= n else left - 1 if __name__ == "__main__": sol = Solution() # n = 9 # n = 8 # n = 27 n = 925414783 res = sol.cuberoot(n) print res
int cuberoot(int n ) { if(n == 1) return 1; for(int i = 1; i<n; i++){ if(i*i*i > n) return i-1; //立方一旦大于n就可以收网了 } return 0; }