LeetCode 1346. Check If N and Its Double Exist

56 阅读1分钟

🔗 leetcode.com/problems/ch…

题目

  • 给定一个数组 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;
    }
};