Implement int sqrt(int x).
Compute and return the square root of x.
题目分析:
实现 int sqrt(int x) 函数,计算并返回 x 的平方根。
样例
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
N = | 123 | 45678 | 91011 | 12131415 | 16171819 | 2021222 | 24 | 252627 | 282930 |
---|---|---|---|---|---|---|---|---|---|
sqrt(N)= | 1 | 2 | 3 | 3 | 4 | 4 | 4 | 5 | 5 |
N/4= | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 6 | 7 |
sqrt(N/4) | 0 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 |
2*sqrt(N/4) | 0 | 2 | 2 | 2 | 4 | 4 | 4 | 4 | 4 |
如果(2*sqrt(N/4)+1)*(2*sqrt(N/4)+1)<=N,则sqrt(N)=2*sqrt(N/4)+1;否则sqrt(N)=2*sqrt(N/4)
java:
public class Solution {
public int mySqrt(int x) {
if(x<4) return x==0?0:1;
int res = 2*mySqrt(x/4);
return ((res+1)*(res+1)<=x&&(res+1)*(res+1)>=0)?(res+1):res;
}
}
Given an array which consists of non-negative integers and an integer m, you can split the array into m non-empty continuous subarrays. Write an algorithm to minimize the largest sum among these m subarrays.
Note:
If n is the length of array, assume the following constraints are satisfied:
1 ≤ n ≤ 1000
1 ≤ m ≤ min(50, n)
Examples:
Input:
nums = [7,2,5,10,8]
m = 2
Output:
18
Explanation:
There are four ways to split nums into two subarrays.
The best way is to split it into [7,2,5] and [10,8],
where the largest sum among the two subarrays is only 18.
Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix such that its sum is no larger than k.
Example:
Given matrix = [
[1, 0, 1],
[0, -2, 3]
]
k = 2
The answer is 2. Because the sum of rectangle [[0, 1], [-2, 3]] is 2 and 2 is the max number no larger than k (k = 2).
Note:
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix.
Note that it is the kth smallest element in the sorted order, not the kth distinct element.
Example:
matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,
return 13.
Note:
You may assume k is always valid, 1 ≤ k ≤ n2.