Leetcode刷题笔记_二分法部分

二分法


  • 二分法的精髓:函数单调性+计算内容重复
  • 不同于分治
  • 求答案->求判定
    • 传统二分法
      • 给大小找下标or给下标找大小?
    • 二分答案法
    • Leetcode 69,410,363,378
69. Sqrt(x)

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 =12345678910111213141516171819202122224252627282930
sqrt(N)=123344455
N/4=012345667
sqrt(N/4)011122222
2*sqrt(N/4)022244444

如果(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;
    }
}
410. Split Array Largest Sum

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.
363. Max Sum of Rectangle No Larger Than K

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:

  • The rectangle inside the matrix must have an area > 0.
  • What if the number of rows is much larger than the number of columns?
378. Kth Smallest Element in a Sorted Matrix

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值