📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 5112| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

[二分/排序/搜索] 分享一个好用的binary search模版

 
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
今天在leetcode discussion的时候,发现有一个评论分享了一个二分法的模版https://leetcode.com/problems/bi ... 2/Binary-Search-101
做了几个题试了试真的好用。而且我觉得这个模版的逻辑很make sense,应该可以handle大部分问题。
658. Find K Closest Elements
```python
    def findClosestElements(self, A, k, x):
        left, right = 0, len(A) - k
        while left < right:
            mid = (left + right) // 2
            if x - A[mid] > A[mid + k] - x:
                left = mid + 1
            else:
                right = mid
        return A[left:left + k]
```

35. Search Insert Position
```python
def searchInsert(self, nums: List[int], target: int) -> int:
        n = len(nums)
        left, right = 0, n
        while left < right:
            mid = (left+right)//2
            if nums[mid] < target:
                left = mid+1
            else:
                right = mid
        return left
```

分享给大家,希望大家也可以在这个帖子下面讨论一下这个模版对哪些题有用,哪些题不那么有用。祝愿最后大家都能轻松写出bug free的binary search!


评分

参与人数 9大米 +17 收起 理由
fireonice7 + 1 很有用的信息!
xiaohuangyaii + 1 很有用的信息!
dreamdriver + 2 给你点个赞!
生夕 + 2 很有用的信息!
不要拧巴 + 3 给你点个赞!

查看全部评分


上一篇:有人一起读effective java吗?
下一篇:微软近期高频面试题分享 + 分析(十)
全局:
leetcode总结的几个专题做的都不错的
回复

使用道具 举报

🔗
Chau 2021-7-11 05:33:04 来自APP | 只看该作者
全局:
哈哈…前几天刚刚看到这个模版,真的很实用
回复

使用道具 举报

全局:
第二个模板就是Python的bisect.bisect_left,用来找第一个大于等于target的数的index,找不到的话返回数组长度n。原问题能转化成这个问题的话就可以用这个模板。
回复

使用道具 举报

🔗
hezitaohaha 2021-7-11 06:46:21 | 只看该作者
全局:
二分法难在嵌套在各种medium和hard题里面,属于解题的子步骤,而且还是变种(不是简单的在有序序列中找某个值,找的可能是其他东西,这个有序序列也不明显)。这时候细节是魔鬼。
回复

使用道具 举报

🔗
Falldawn 2021-7-11 11:39:28 | 只看该作者
全局:
多谢!这个我早就发过帖了,比这个总结的详细,在这个基础上
回复

使用道具 举报

🔗
runtimee 2021-7-11 15:07:51 | 只看该作者
全局:
刚巧我也在medium有一个bisect的总结
https://levelup.gitconnected.com ... search-99508cc62fe4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表