阿里P5初级算法面经:排序算法对比、链表操作、动态规划入门、LRU缓存实现 P8架构师聊完系统设计,这篇回到P5级别的数据结构与算法。算法是阿里面试第一关——P5必须过算法,面试官给一道LeetCode Medium,20分钟写完跑通,过不了后面都不用聊。Android岗算法题集中在排序、链表、树、动态规划和缓存设计,难度Medium居多,要求讲清时间空间复杂度。今天8道题覆盖P5算法核心考点,每道给出思路+代码+复杂度分析。Q1:常见排序算法对比?Android开发用哪些?快速排序:平均O(n log n),最坏O(n²)。选随机pivot避免最坏。空间O(log n)递归栈,不稳定。归并排序:稳定O(n log n),空间O(n)。适合链表排序。堆排序:O(n log n),空间O(1),不稳定。适合TopK问题。Android实际:Collections.sort用TimSort(归并+插入混合),Arrays.sort用DualPivotQuickSort。面试考手写一般考快排和归并。追问:快排为什么比归并常用?常数因子小——快排in-place不需要额外数组,实际运行比归并快2-3倍。但归并稳定(相等元素不交换位置),排序自定义对象时用归并更可靠。Q2:链表反转怎么实现?迭代和递归都写一下迭代法:三个指针prev/curr/next,遍历链表逐个反转next指向。时间O(n)空间O(1)。ListNode reve