前端工程师的 LeetCode 之旅 -- 二分搜索算法 Medium 篇(上)

本文是前端工程师使用JavaScript在LeetCode上进行二分搜索算法的Medium难度实战分享,涵盖378. 有序矩阵中第K小的元素、875. 爱吃香蕉的珂珂等题目,详细解析解题思路,帮助理解如何在实际问题中构造和应用二分搜索。
摘要由CSDN通过智能技术生成

一、前言

  错过上一篇的小伙伴们,可以先阅读前端工程师的 LeetCode 之旅 – 二分搜索算法 Easy 篇,了解一下二分搜索算法的实现原理以及如何利用 JavaScript 语言实现该算法。

  二分搜索算法本身并不是特别复杂,核心点主要集中在:

  • 有序数组:指的是一个递增或者递减的区间(特殊情况如:【852. 山脉数组的峰顶索引】)
  • 中间数:用来确定搜索目标落在左半区间还是右半区间

  进入 Medium 难度之后,这两个条件一般不会直接给出,需要解题者根据题目自行构造。

二、LeetCode 实战

1、378. 有序矩阵中第K小的元素

  由水平和垂直方向为递增数组的条件,可以得到当前二维空间中的左上角为最小值,右下角为最大值,所以有序数组即为最小值到最大值的整数递增序列

  题目要求计算出第 k 小的元素,那么从有序数组中挑选出来的中间数并不能直接与 k 进行比较,需要在二维空间中找出当前中间数是第几小的数字,再与 k 进行比较:

  • 如果当前中间数比第 k 小的元素要大,那么第 k 小元素必然在左半区间;
  • 否则必然落在右半区间;

  通过当前二维数组水平和垂直方向单调递增的特性,可以从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值