Skip to content

二、二分算法

About 1001 wordsAbout 3 min

algo二分查找

2024-02-21

视频讲解:二分查找 红蓝染色法【基础算法精讲 04】

灵神提单:二分算法(二分答案/最小化最大值/最大化最小值/第K小)

一、二分查找

1.1、基础

34. 在排序数组中查找元素的第一个和最后一个位置(20250401更新)

题目:

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

>=, <= 都可以转化用 binarySearch 来转化

比如>=x 直接用, <=x 可以转化成>= x+1, 最后取下标减一。

两端闭区间[left, right]

704. 二分查找(20250401更新)

二分查找最基础的题,直接套用框架求解,都不需要做额外的操作。

2529. 正整数和负整数的最大计数(20250401更新)

给你一个按 非递减顺序 排列的数组 nums ,返回正整数数目和负整数数目中的最大值。

  • 换句话讲,如果 nums 中正整数的数目是 pos ,而负整数的数目是 neg ,返回 posneg二者中的最大值。

注意:0 既不是正整数也不是负整数。

由于数组是有序的,我们可以二分找到第一个>=0的数的下标i,那么下标在[0, i-1]中的数都是小于0的,这恰好有i个。

同样的,二分找到第一个>0的数的下标j,那么下标[j, n-1]中的数都大于0,这里有n-j个。

所以通过二分查找第一个>=0的和第一个>0的位置,就可以用O(logn)的时间解决。

Java

Changelog

Last Updated: View All Changelog
  • feat(sci): encomic: 复盘

    On 4/12/25

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!