给定一个长度为N的数组,数组中的元素为1到N-1,求数组中各个元素出现的次数,要求时间复杂度为O(n),空间复杂度为O(1)。例如:int[] arr = {2, 4, 4, 2, 3}; 输出:2有2个,3有1个,4有2个。
考察说明
考察在不使用额外空间的约束下,如何通过标记法统计元素频次
回答思路
- 理解题目约束:O(n)时间、O(1)额外空间
- 说明利用数组下标作为计数空间,并通过正负号标记已访问元素
- 正确处理元素重复及未出现元素,能准确还原次数
- 能够结合示例验证算法正确性,并说明边界情况
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。