关于数组找唯一元素编程题中约束条件的含义问询
数组找唯一元素题目的约束条件解析
题目背景
给定一个数字数组,其中除一个数字外其余每个数字均出现两次,需找出仅出现一次的数字。
示例:const num_list = [8, 6, 3, 2, 4, 2, 3, 4, 5, 8, 7, 7, 6]
答案:5
约束条件疑惑
题目给出的约束条件:
2 <= num_list[i] <= 1000003 <= i <= 10,000
疑问:第二个约束中的“i”指代什么?是指数组元素的最小数量(有多组测试用例)?还是指遍历数组只能从索引3开始?
解析
2 <= num_list[i] <= 100000的含义
这里的i是数组的任意索引,意思是数组中每一个元素的取值范围都在2到100000之间。3 <= i <= 10,000的含义
这里的i指的是数组的长度(元素总个数),即所有测试用例中的数组,元素数量最少为3个,最多为10000个。
- 逻辑支撑:题目要求数组中仅一个元素出现一次,其余均出现两次,那么数组长度必然是奇数(公式为
2n+1,n为重复元素对的数量),最小的奇数就是3(对应1个唯一元素+1对重复元素),完全匹配约束的最小值。 - 排除“遍历从索引3开始”的可能:这种约束对解题目标没有任何必要的逻辑支撑,不符合编程题约束的常规设计思路,因此可以直接排除。
内容的提问来源于stack exchange,提问作者Hehe90
相关产品推荐
相关产品推荐

