[leetcode题解]1346. Check If N and Its Double Exist(检查整数及其两倍数是否存在)

题目是一道简单的leetcode题目,leetcode1346题解如下:

本题目给定一个整数数组,数组中的所有元素均满足大于等于10^-3 小于等于 10^3范围。

现在求在该数组中是否存在两个下标i和j,是的i != j的情况下,arr[i] = 2 * arr[j]。

这个题目相对比较简单,关键是要考虑一下0的情况。

想了一下,最简单的方法可以直接使用哈希的方式解决,遍历数组,每个值都在哈希中记录出现的个数,然后再判断每个数*2是否存在。

如果存在就返回true,但是这里要注意一下0,当存在0时,不能只判断2 * 0是否存在,而应该判断0出现的个数>=2才行。

本文由iaccepted发布在凌风技术站下的leetcode题解专栏。

所以1346leetcode题解代码如下:

class Solution {
public:
    bool checkIfExist(vector<int>& arr) {
        map<int, int> mp;
        int i;
        
        for (i = 0; i < arr.size(); i++) {
            mp[arr[i]] += 1;
        }
        
        for (i = 0; i < arr.size(); i++) {
            if (arr[i] == 0 && mp[arr[i]] > 1) {
                return true;
            }
            /* iaccepted发表在凌风技术站iaccepted.net */
            if (arr[i] != 0 && mp.count(2 * arr[i]) >= 1) {
                return true;
            }
        }
        return false;
    }
};

本文遵从CC3.0协议转载请注明:转自凌风技术站

本文标题:[leetcode题解]1346. Check If N and Its Double Exist(检查整数及其两倍数是否存在)

本文链接地址:https://www.iaccepted.net/algorithm/leetcode/252.html

相关文章