DOCUMENTATION · 算法
Java 刷题与复杂度导学
字数 825 · 预计阅读 3 分钟本页导航
Java 刷题与复杂度导学
本章是全部题目的共同前置知识。它对应原稿 M00,不计入 300 道专题题单。
学习定位: 先完成本章,再进入专题题单;Java API 会在后续章节的具体题目中持续巩固。
- 区分LeetCode函数签名模式与ACM输入输出模式;读懂参数、返回值、题目约束与样例。
- 熟悉数组、下标、二维数组、增强for和对象引用;理解修改对象与重新赋值引用的差别。
- 掌握String、char[]、StringBuilder,区分equals与==,了解字符串不可变性和循环拼接成本。
- 会用ArrayList、HashMap、HashSet、ArrayDeque、PriorityQueue、Arrays.sort与Comparator;在后续模块实现必要的数据结构和算法。
- 识别O(1)、O(log n)、O(n)、O(n log n)、O(n²)、O(2^n)、O(n!);会将输入规模与数量级估算联系起来。
- 区分输出空间、辅助空间与递归栈;认识均摊复杂度、平均复杂度、最坏复杂度和哈希退化。
- 提前理解递归的函数契约、终止条件、规模缩小与调用栈;手算阶乘、数组求和和区间分治,为M08归并快排做准备。
- 掌握int/long边界、乘法溢出、Integer比较、负数取模;M05重点复核((x % k) + k) % k。
- 建立一个Java练习目录;会写ListNode和TreeNode;准备BufferedReader/StringTokenizer、StringBuilder输出模板。
- 每次提交前自查:是否独立推导、变量含义是否清楚、循环是否推进、边界是否覆盖、复杂度能否解释。