抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

求解区间时,受左右两端的值影响,并向中间区域靠拢求值时可用。 11.盛最多水的容器 Problem: 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x...

图,求连通分量,判断点与点是否连通,求拓扑排序等问题,可以使用并查集去解决问题。

求解数组区间的和,有前缀和、差分数组、树状数组,但各所适用的场景不用。

  • 前缀和适用于数组的值一开始固定不变的情况;
  • 差分数组适用于数组的值会改变(增加|删除),但是求解原数据时需要恢复数据;
  • 树状数组适用数组的值会改变,还可以快速求解一段区间的和,但需要构建数据结构。

题目给出的条件为:图、路径有权值、权重无负数、求路径长度最值,可以使用 dijkstra 求 出发点 到其他点的 最短路径,记住dijkstra算法模板,直接套上用,构建一个 State类记录点的id和记录的最短路径长度,然后核心是最小堆,结合BFS遍历。

当题目给出的数据不是很大,需要快速求解数组区间的和,并且频繁的对数组内的值增加和减掉,可以考虑用差分数组来实现快速求区间值。

二分查找包括求查找中间值和左右边界值三种情况。

模拟,即题目给定规则,要求找到符合条件的解。

回溯算法本质上也是一种暴力穷举算法,可以理解为:每个回溯问题就是遍历一个决策树的过程,每个叶子节点都存在一个数值,寻找叶子结点是否为满足条件的值,然后收集全部满足条件的值的过程就是回溯算法

排列、组合和子集问题,无非就是寻找决策树叶子节点的过程,只是这三个问题对树枝的遍历和剪/加树枝有稍微变化罢了,然后在区分一下三种边界条件:元素无重复不可复选、元素无重复可复选、元素可重复不可复选。

滑动窗口也为快慢指针。两个指针,fast指针在前面探路,slow指针负责在移动前做判断条件,然后再移动,两个指针覆盖的长度即为要找的元素空间。

常见的快慢指针题目:找满足条件的最长子串、删除排序的重复元素等。

本章主要介绍链表相关的逻辑操作,包括寻找倒数第 K 个节点、寻找中间位置、判断是否有环、判断两个链表是否相交等。