1346. 检查整数及其两倍数是否存在
大约 1 分钟
---
1346. 检查整数及其两倍数是否存在
- 标签:数组、哈希表、双指针、二分查找
- 难度:简单
题目链接
题目大意
描述:给定一个整数数组 。
要求:检查是否存在两个不同的下标 和 ,使得 。
说明:
- 。
- 。
示例:
- 示例 1:
输入:arr = [10,2,5,3]
输出:true
解释:10 = 2 * 5。- 示例 2:
输入:arr = [3,1,7,11]
输出:false解题思路
思路 1:哈希集合
1. 核心思想
遍历数组,用集合记录已出现的数。对每个数检查它的两倍和它的一半是否出现过(注意偶数的一半才是整数)。
需要特别注意数字 的情况: 的两倍是 ,所以如果 出现过至少两次,也返回 。用集合 + 条件判断可以处理。
2. 具体步骤
第 1 步:初始化集合 。
第 2 步:遍历 :
- 如果 在 中,返回 。
- 如果 且 在 中,返回 。
- 将 加入 。
第 3 步:返回 。
思路 1:代码
class Solution:
def checkIfExist(self, arr: List[int]) -> bool:
seen = set()
for num in arr:
if num * 2 in seen or (num % 2 == 0 and num // 2 in seen):
return True
seen.add(num)
return False思路 1:复杂度分析
- 时间复杂度:。
- 空间复杂度:。