双指针
双指针技巧是一种常用的算法优化方法,主要用于处理数组或链表等线性结构的问题。它通过定义两个指针(或索引),并以不同的策略移动这两个指针,来达到减少时间复杂度、简化问题解决过程的目的。根据具体问题和解题策略的不同,双指针技巧大致可以分为以下几类:
# 快慢指针
快慢指针主要用于解决链表中的问题,如检测环、寻找环的入口、寻找链表的中点等。在这种策略中,两个指针从同一位置出发,一个以快速移动(例如,每次移动两步),另一个以慢速移动(例如,每次移动一步)。通过比较快慢指针的相对速度,我们可以得到一些有用的信息。
检测链表中的环
#include <iostream>using...
more...
计数原理与排列组合
# 加法原理与乘法原理
在组合数学和概率论中,加法原理和乘法原理是两个基本的计数原理,用于计算事件的可能性。
加法原理(也称为求和原理):
加法原理用于计算两个事件的并集的可能性。如果事件 A 可以发生的方式有 m 种,事件 B 可以发生的方式有 n 种,且这两个事件不可能同时发生,那么事件 A 或 B 发生的方式总共有 m + n 种。
例如,从一个红色和一个蓝色袋子中选取一个球,红袋子中有 3 个球可选,蓝袋子中有 4 个球可选,那么总共有 3 + 4 = 7 种可能的选球方式。
乘法原理(也称为积法则):
乘法原理用于计算两个事件的交集的可能性。如果事件 A 可以发生的方式有 m...
more...