题目地址:
https://leetcode.com/problems/check-if-n-and-its-double-exist/
给定一个长 n n n的数组 A A A,问是否存在两个不同的下标 i , j i,j i,j使得 A [ i ] × 2 = A [ j ] A[i]\times 2=A[j] A[i]×2=A[j]。
代码如下:
import java.util.HashSet;
import java.util.Set;
public class Solution {
public boolean checkIfExist(int[] arr) {
Set<Integer> set = new HashSet<>();
for (int x : arr) {
if (set.contains(x * 2) || (x % 2 == 0 && set.contains(x / 2))) {
return true;
}
set.add(x);
}
return false;
}
}
时空复杂度 O ( n ) O(n) O(n)。