(1)leetcode里1346题
给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。
更正式地,检查是否存在两个下标 i 和 j 满足:
i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]
class Solution {
public:
bool checkIfExist(vector<int>& arr) {
map<int,int>mymap;
int count0=0;
for(int i=0;i<arr.size();++i)
{
if(arr[i]==0)
{
count0++;
if(count0==2)return 1;
}
mymap[arr[i]]=arr[i]*2;
}
for(int i=0;i<mymap.size();++i)
{
if(mymap[mymap[arr[i]]]!=0)return 1;
}
return 0;
}
};
原因:使用map[]访问不存在的关键字后会自动将这个关键字加入map,对应值为