题目
- 给定一个数组 arr,如果有两个元素满足
arr[i] == 2 * arr[j]&&i != j返回 true 否则 false
思路
- hash table 保存数字和对应的下标,遍历一遍数组判断是否有满足条件的组合
代码
class Solution {
public:
bool checkIfExist(vector<int>& arr) {
int n = arr.size();
unordered_map<int, vector<int>> m;
for (int i = 0; i < n; i++) {
int item = arr[i];
m[item].push_back(i);
}
for (int i = 0; i < n; i++) {
int item = arr[i];
if (m[item*2].size() > 1) return true;
if (m[item*2].size() == 1 && m[item*2][0] != i) return true;
}
return false;
}
};